ruby on rails - param is missing or the value is empty: task. How can I make possible to add a "To Do" while also rendering the view to create a project? -


i want when user creates project s/he add new tasks it. have figured out "solution" , have encountred error can't solve.

i dont know of "ruby correct" mix tasks actions projects controller. reason took approach couldn't figure out solution doing in views , make project saved..

this projects_controler.rb

  class projectscontroller < applicationcontroller   before_action :set_project, only: [:show, :edit, :update, :destroy]   before_action :authenticate_user!    def create     @project = project.new(project_params)     @task = task.new(task_params)      respond_to |format|       if @project.save , @task.save         format.html { redirect_to @project, notice: 'project created.' }         format.json { render :show, status: :created, location: @project }       else         format.html { render :new }         format.json { render json: @project.errors, status: :unprocessable_entity }       end     end   end    # patch/put /projects/1   # patch/put /projects/1.json   def update      respond_to |format|      if @project.update(project_params)         format.html { redirect_to @project, notice: 'project updated.' }         format.json { render :show, status: :ok, location: @project }       else         format.html { render :edit }         format.json { render json: @project.errors, status: :unprocessable_entity }       end     end   end    # delete /projects/1   # delete /projects/1.json   def destroy     # @list = list.find(params[:id])     @project.destroy     respond_to |format|       format.html { redirect_to projects_url, notice: 'project destroyed.' }   format.json { head :no_content }     end   end    private     # use callbacks share common setup or constraints between actions.     def set_project       @project = project.find(params[:id])     end      # never trust parameters scary internet, allow white list through.     def project_params       params.require(:project).permit(:title, :description, :done, :user_id)     end        def set_task       @task = task.find(params[:id])     end      def task_params       params.require(:task).permit(:title, :done, :project_id)     end end 

project.rb

class project < applicationrecord   belongs_to :user, foreign_key: "user_id"   has_many :tasks , dependent: :destroy   validates_presence_of :user   validates_uniqueness_of :title, on: :create, message: "must unique"   validates :title, presence: true, length: { minimum: 2 }      def done_tasks      tasks.where(done: true).order("updated_at desc")   end end 

task.rb

class task < applicationrecord   belongs_to :project, foreign_key: "project_id"#, class_name: "list"   validates_presence_of :title    def completed?     !completed_at.blank?   end  end 

routes.rb

rails.application.routes.draw    devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }      resources :projects         resources :tasks     end     authenticated :user     root to: 'projects#index'   end   unauthenticated :user     root 'welcome#home'   end end 

new.html.erb

<h1>new project</h1>  <%= render 'form', project: @project, task: @task %> <%# render 'form', project: @project, task: @task %>    <!-- custom -->   <!-- shall add id projrct t trackable task????? , describe in task.rb -->   <!-- <h1>tasks</h1> -->   <%# f.button %> <!-- button add new task --> <%# f.button "add new task current project" %>  <!-- if else mechanism adding new task via button  --> <!-- when button pressed, tasks/_form appear down here --> <!-- button save task while @ same moment  .....  override "create task" , "create project" save "save project task" -->  <%# render '../tasks/_form' %>  <%= link_to 'back', projects_path %> 

_form.html.erb

<%= simple_form_for(@project, @task) |f| %> <%# form_for([@post, @comment]) |f| %>    <% f.error_notification %>    <div class="form-inputs">     <%= f.input :title %>     <%= f.input :description %>     <%= f.input :done %>     <%= f.association :user %>   </div>      <div class="form-actions">     <%= f.button :submit %>   </div> <% end %> 

in task_params

params.require(:task).permit(:title, :done) 

and create method should like

def create   @project = project.new(project_params)   @project.tasks.build(task_params)    respond_to |format|     if @project.save , @task.save       format.html { redirect_to @project, notice: 'project created.' }       format.json { render :show, status: :created, location: @project }     else       format.html { render :new }       format.json { render json: @project.errors, status: :unprocessable_entity }     end   end end 

Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -