我正在 Rails 3 中构建一个多嵌套表单。我正在使用 formtastic_cocoon gem,但我认为这与这个问题没有太大关系。
我有用户,用户有任务,任务有步骤。嵌套是用户>任务>步骤。我可以动态地向用户添加和删除任务字段,以及任务中的步骤字段。
但是,当我提交表单时,用户会获得任务,但任务>步骤不会保存到数据库中。
Rails 没有返回任何错误,只是没有任何反应。
我的模型是
类用户 < ActiveRecord::Base act_as_authentic has_many:任务 accept_nested_attributes_for :tasks, :reject_if=> proc {|attributes| 属性[:entry].blank?}, :allow_destroy => true 结尾 类任务 < ActiveRecord::Base attr_accessible :入口 属于_to:用户 has_many:步骤 accept_nested_attributes_for :steps, :reject_if=> proc {|attributes| 属性[:title].blank?}, :allow_destroy => true 结尾 类步骤 < ActiveRecord::Base attr_accessible :标题 属于_to:任务 结尾
在我的 form.html.erb 我有
<%= semantic_form_for @user %> <%= form.inputs :username, :password %> <div> <% form.semantic_form_fields_for :tasks do |builder| %> <%= 渲染 'task_fields', :f=>builder %> <% 结束 %> <%= link_to_add_association '添加任务', 表单, :tasks %> </div>
_task_fields.html.erb 看起来像这样
<div class="nested-fields"> <%= link_to_remove_association "删除任务", f %> <%= f.inputs :entry %> <div> <% f.semantic_form_fields_form :steps do |builder| %> <%= render 'step_fields' :f => builder %> <% 结束 %> <%= link_to_add_association '添加步骤', f, :steps %> </div> </div>
最后,_step_fields.html.erb 页面是
<div class="nested-fields"> <%= link_to_remove_association "删除步骤", f %> <%= f.inputs :title %> </div>