嵌套表单触发'无法批量分配受保护属性警告

时间:2011-02-18 03:05:34

标签: ruby-on-rails nested-forms mass-assignment

我有一个多层嵌套表单

User->Tasks->Prerequisites 

以相同的形式

User->Tasks->Location

位置表单工作正常,现在我正在尝试为当前任务指定先决条件。先决条件是存储在:completed_task字段中的task_id。

当我提交表单时,我在输出中出现以下错误

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

用户每个任务的一个警告。

我已经完成了与此相关的所有其他问题,确保正确引用字段名称:completed_task,

将attr_accessible添加到我的模型中(它已经存在并且我扩展了它)。

我不确定我应该做什么。

我的模特看起来像

class Task < ActiveRecord::Base
     attr_accessible :user_id, :date, :description, :location_id

     belongs_to :user
     has_one :location
     accepts_nested_attributes_for :location 
     has_many :prerequisites
     accepts_nested_attributes_for :prerequisites
end

class Prerequisite < ActiveRecord::Base
     attr_accessible :completed_task

     belongs_to :task
end

表单使用formtastic,我通过

包含表单
<%= f.semantic_fields_for :prerequisites do |builder3| %>
    <%= render 'prerequisite_fields', :f=>builder3 %>
<% end %>

--- _prerequisite_fields.html.erb -----
< div class="nested-fields" >
   <%= f. inputs:completed_step %>
</div>

有什么建议吗?

1 个答案:

答案 0 :(得分:26)

将atlastquisite_attributes添加到attr_accessible以进行质量分配

attr_accessible :user_id, :date, :description, :location_id, :prerequisite_attributes

应该让你开始。