无法批量分配受保护的属性whit fields_for

时间:2013-06-01 17:00:10

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

我尝试在创建产品时使用此表单:

这是产品形式:

<%= f.fields_for :feature do |ft| %>
    <%= ft.label :name %>
    <%= ft.text_field :name %>  
    <%= ft.label :value %>
    <%= ft.text_field :value %>
<% end %>

但是当尝试创建我得到这个错误

Can't mass-assign protected attributes: feature

我试着把它放在我的产品型号中:

 attr_accessible :code, :description, :price, :title,:image_1,:image_2,:image_3,:image_4,:image_5,:image_6,:image_7,:image_8,:features_attributes # and feature_attributes meet


  accepts_nested_attributes_for :features

但得到同样的错误,我的关联是

product.rb

  has_many :features

feature.rb

  belongs_to :product

我看到了嵌套的属性类,但没有找到,因为错误仍然存​​在:

http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html

错误是:

Can't mass-assign protected attributes: feature

如果有人能非常非常地感谢你。

1 个答案:

答案 0 :(得分:1)

我认为应该是:

fields_for :features

修改

第一个参数的名称应该是关联的名称(要素),然后第二个参数应该是对象的实例。所以你必须把这个部分包装成这样的循环:

<% @product.features.each do |feature| %>
  <%= f.fields_for :features, feature do |ft| %>
    <%= ft.label :name %>
    <%= ft.text_field :name %>  
    <%= ft.label :value %>
    <%= ft.text_field :value %>
  <% end %>
<% end %>