一次保存多个模型的问题

时间:2011-06-23 02:46:53

标签: ruby-on-rails ruby-on-rails-3

我正在创建一个目标完成应用程序,其中用户有很多目标,目标有很多任务。我试图让用户可以同时创建任务和目标。我遇到的问题是目标是保存得很好,但属于它的任务根本就没有保存。从关于这个主题的所有其他类似问题我认为实际形式很好,但目标控制器中的创建动作搞砸了。对不起,如果这看起来像一个微不足道的问题,我仍然是铁杆的新手。

表格

<%= form_for @goal do |f| %>     

  <%= render 'shared/error_messages', :object => f.object %>     
  <p>    
    <%= f.label :content, "Goal" %>     
    <%= f.text_field :content %>     
  </p>     
  <%= f.fields_for :tasks do |ff| %>          
  <p>    
    <%= ff.label :content, "Task" %>          
    <%= ff.text_field :content %>          
  </p>     
  <% end %>     
  <p><%= f.submit "Submit" %></p>     
<% end %>     

目标控制器

def create
  @user = current_user
  @goal = @user.goals.build(params[:goal])
  if @goal.save
    flash[:success] = "Goal created!"
    redirect_to user_path(current_user) 
  else
    render 'new'
  end 
end 

def new 
  @title = "New Goal"
  @goal = Goal.new
  @goal.tasks.build
end 

1 个答案:

答案 0 :(得分:0)

  @goal = @user.goals.build(params[:goal])
  @goal.tasks.build(params[:goal][:task]) # Here I assume params[:goal][:task] will return an hash with task fields as keys.