3

这是我的嵌套表单的相关部分:

<div class="field">
<%= f.fields_for "@partcode" do |p|%> 

  <%= p.label "partcode"%><br />
  <%= p.text_field :partcode %>

<% end %>
</div>

我的模型中已经有了这个:

attr_accessible :partcode,
                :description

但是,当我在表单中输入内容时,出现此错误:

Can't mass-assign protected attributes: @partcode

这是我的零件代码模型:

class Partcode < ActiveRecord::Base
 attr_accessible :partcode,
              :description

  validates       :partcode,
              :description,
              :presence => true

 belongs_to "goods_ins"

 accepts_nested_attributes_for "goods_ins"


end

这是我的商品模型中的所有代码:

class GoodsIn < ActiveRecord::Base
  attr_accessible :c4lpono, 
              :courier, 
              :deliverydate,  
              :deliverynoteno,  
              :description,  
              :destination,  
              :notes,  
              :partcode,  
              :quantity,  
              :signedby,  
              :suppliername

  validates       :deliverydate,  
              :deliverynoteno,  

              :destination,

              :quantity,  
              :signedby,  
              :suppliername,
              :presence => true

 has_many :suppliers

 has_many :partcodes

 accepts_nested_attributes_for :partcodes
end

这也是new我的零件代码控制器的一部分:

def new
@partcode = Partcode.new

respond_to do |format|
  format.html # new.html.erb
  format.json { render :json => @partcode }
end
end 
4

4 回答 4

7

你不应该有:partcode_attributes to attr_accessible(在 GoodsIn 模型中),像这样:

attr_accessible :partcode_attributes

假设您的模型关联是这样配置的。希望能帮助到你

于 2012-07-04T12:00:39.873 回答
0

您的模型必须具有,accepts_nested_attributes_for :partcode否则它不会接受它的属性。

班级也Partcode必须将他的属性列入白名单。

更新:

@partcode里面一定有新的Partcode。确保您设置@partcode = @goods_in.partcodes.build或简单的@partcode = Partcode.new.

表单上的字段应该是这样<%= f.fields_for @partcode do |p| %>的,也没有引号。

于 2012-07-04T12:00:40.137 回答
0

我想看看你的模型。但 attr_accessible 不是一个实例。我觉得应该这么说

<%= f.fields_for "partcode" do |p|%>` 

比在您的控制器中:

@partcode = Partcode.new(params["partcode"])
于 2012-07-04T11:53:19.727 回答
0

查看您的回答中的评论,我相信您可以使用buildhas_onerelanshionships 制作的方法:

@partcode = GoodsIn.build_partcode

所以你的表格可以是这样的:

<%= f.fields_for @partcode do |p|%> 
于 2012-07-04T11:57:41.447 回答