Ruby on rails 嵌套形式“;Can';t质量分配受保护的属性“;
我有3个模型;报价、项目和产品 My quote/new.html.erb设置为呈现包含项目表单的分部,并且在该项目表单中呈现分部以选择产品 错误:ActiveModel::MassAssignmentSecurity::QuotesController#create中的错误 “无法批量分配受保护的属性:产品” (我删去了下面不相关的内容) Quote.rbRuby 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
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| %>