1

我正在 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>
4

1 回答 1

1

您在日志中看到了吗?:

WARNING: Can't mass-assign protected attributes: steps_attributes

如果是这样,请将其添加到 Task 模型中:

attr_accessible :steps_attributes
于 2011-02-10T02:27:45.427 回答