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