Ruby on rails 嵌套形式“;Can';t质量分配受保护的属性“;

Ruby on rails 嵌套形式“;Can';t质量分配受保护的属性“;,ruby-on-rails,forms,activerecord,nested-attributes,Ruby On Rails,Forms,Activerecord,Nested Attributes,我有3个模型;报价、项目和产品 My quote/new.html.erb设置为呈现包含项目表单的分部,并且在该项目表单中呈现分部以选择产品 错误:ActiveModel::MassAssignmentSecurity::QuotesController#create中的错误 “无法批量分配受保护的属性:产品” (我删去了下面不相关的内容) Quote.rb class Quote:销毁 接受以下项的\u嵌套\u属性\u 结束 项目1.rb class Item < ActiveReco

我有3个模型;报价、项目和产品

My quote/new.html.erb设置为呈现包含项目表单的分部,并且在该项目表单中呈现分部以选择产品

错误:ActiveModel::MassAssignmentSecurity::QuotesController#create中的错误 “无法批量分配受保护的属性:产品”

(我删去了下面不相关的内容) Quote.rb

class Quote:销毁
接受以下项的\u嵌套\u属性\u
结束
项目1.rb

class Item < ActiveRecord::Base
  attr_accessible :price, :product_attributes

  belongs_to :quote
  belongs_to :product
  accepts_nested_attributes_for :product
end
class项
Product.rb

class Product < ActiveRecord::Base
  attr_accessible :name, :item_make

  has_many :items
  accepts_nested_attributes_for :items
end
类产品
new.html.erb

<%= simple_nested_form_for @quote do |m| %>

  <%= m.simple_fields_for :items, :html => { :multipart => true } do |quoteform| %>
    <%= render "form", f: quoteform %>
  <% end %>

  <%= m.link_to_add "Add an item", :items %>
  <%= m.button :submit %>
<% end %>

{:multipart=>true}do | quoteform |%>
_form.html.erb

<%= f.simple_fields_for :products, :html => { :multipart => true } do |x| %>
    <% render "layouts/styleselect", g: x %>
<% end %>
{:multipart=>true}do | x |%>
_styleselect.html.erb

<% g.hidden_field :item_make, :value => @item.make %>
<%= g.input :name, collection: Product.where(:item_make => 1), label: false, input_html: {:id=>"sst_style"} %>
@item.make%>
1) ,label:false,input_html:{:id=>“sst_style”}%>
所以基本上嵌套的表单是Quote->Item->Product,但是Item属于Product,这可能是导致问题的原因?我尝试将product_属性或products_属性添加到item模型和quote模型,产品的accepts_嵌套_属性也是如此


感谢您的帮助。

看起来您需要制作
产品

<%= f.simple_fields_for :product, :html => { :multipart => true } do |x| %>
    <% render "layouts/styleselect", g: x %>
<% end %>
{:multipart=>true}do | x |%>
您目前有:

<%= f.simple_fields_for :products, :html => { :multipart => true } do |x| %>
{:multipart=>true}do | x |%>
<%= f.simple_fields_for :products, :html => { :multipart => true } do |x| %>