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

次のように、(GoodsIn モデルで) attr_accessible に :partcode_attributes を指定する必要はありません。

attr_accessible :partcode_attributes

モデルの関連付けがそのように構成されていると仮定します。それが役に立てば幸い

于 2012-07-04T12:00:39.873 に答える
0

あなたの答えからのコメントを見て、私はあなたがrelanshionshipsのbuildために作られた方法を使うことができると信じています:has_one

@partcode = GoodsIn.build_partcode

したがって、フォームは次のようになります。

<%= f.fields_for @partcode do |p|%> 
于 2012-07-04T11:57:41.447 に答える
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 に答える