我正在尝试制作一个应用程序,用户可以在其中为这些目标保存目标,里程碑,里程碑任务以及目标本身的任务。我正在使用多态关联,但是使用表单来输入所有这些都是很困难的。问题在于里程碑根本没有保存,里程碑任务在数据库中被列为类型“目标”而不是类型“里程碑”。模型和数据库设置为the top answer for this question。 我希望有人可以看看我的form_for实现,看看它是否正确,或者如果问题在别的地方。如果您需要查看其他代码,请告诉我。嵌套属性不保存在具有多态关联的表单中
<%= nested_form_for @goal do |f| %>
<%= render 'shared/error_messages', :object => f.object %>
<%= render 'shared/goal_fields', :f => f %>
<%= f.fields_for :milestones do |ff| %>
<%= render 'shared/milestone_fields', :f => ff %>
<% end %>
<%= f.fields_for :tasks do |ff| %>
<%= render 'shared/task_fields', :f => ff %>
<% end %>
<%= f.link_to_add "Add Milestone", :milestones %>
<%= f.link_to_add "Add Task", :tasks %>
<%= f.submit %>
<% end %>
你只需要使用'@goal.milestones .build'在新的行动中,如果你想要一个'空白'的里程碑形式。这个代码在控制器中更好。 –
我确实有一个质量指派问题,我修正了。我还在表单中添加了@ goal.milestones.build和@ goal.tasks.build。之后,我将所有内容都保存起来,但在编辑表单时,没有任何目标数据显示出来(它看起来就像一个'新'表单)。我有一种感觉,我正在做错事,只是因为这变得有多困难。 –