深层嵌套表单数据不会进入数据库,没有错误

时间:2011-02-09 21:22:55

标签: ruby-on-rails nested-forms formtastic

我正在rails 3中构建一个多嵌套表单。我正在使用formtastic_cocoon gem,但我不认为这对这个问题有多大影响。

我有用户,用户有任务,任务有步骤。 嵌套是用户>任务>步骤。 我可以动态地向用户添加和删除任务字段,以及任务中的步骤字段。

但是,当我提交表单时,用户会获得任务,但任务>步骤不会保存到数据库中。

Rails没有返回任何错误,只是没有任何反应。

我的模特

Class User < ActiveRecord::Base
    acts_as_authentic

    has_many :tasks
        accepts_nested_attributes_for :tasks, :reject_if=> proc {|attributes| attributes[:entry].blank?}, :allow_destroy => true

end

Class Task < ActiveRecord::Base
          attr_accessible :entry

          belongs_to :user
          has_many :steps
         accepts_nested_attributes_for :steps, :reject_if=> proc {|attributes| attributes[:title].blank?}, :allow_destroy => true
end

Class Step < ActiveRecord::Base
        attr_accesible :title

        belongs_to :task
end 

在我的form.html.erb中我有

<%= semantic_form_for @user %>
    <%= form.inputs :username, :password %>
    <div>
      <% form.semantic_form_fields_for :tasks do |builder| %>
         <%= render 'task_fields', :f=>builder %>
      <% end %>
   <%= link_to_add_association 'add task', form, :tasks %>
   </div>

_task_fields.html.erb看起来像这样

 <div class="nested-fields">
     <%= link_to_remove_association "remove task", f %>
        <%= f.inputs :entry %>
          <div>
             <% f.semantic_form_fields_form :steps do |builder| %>
              <%= render 'step_fields' :f => builder %>
             <% end %>
           <%= link_to_add_association 'add step', f, :steps %>
          </div>
</div>

最后,_step_fields.html.erb页面是

  <div class="nested-fields">
   <%= link_to_remove_association "remove step", f %>
    <%= f.inputs :title %>
  </div>

1 个答案:

答案 0 :(得分:1)

你在日志中看到了吗?:

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

如果是这样,请将其添加到任务模型:

attr_accessible :steps_attributes