1

変!ネストされた属性フィールドを宣言するために使用fields_forすると、railsはネストされた属性のIDを持つ非表示の属性を追加します(更新を実行するため)。

= form_for @opinion do |f|
    = f.fields_for :client do |client_f|
        = client_f.text_field :name

私に与える:

<input name="opinion[client_attributes][name]" type="text" />
<input name="opinion[client_attributes][id]" type="hidden" value="4" />

これはにつながります:

Can't mass-assign protected attributes: client_attributes

もちろん、ここに私のモデルがあります:

class Opinion < ActiveRecord::Base

    attr_accessible :content
    attr_accessible :client_id

    validates :content, :presence => true, :length => { :maximum => 2048 }

    belongs_to :client
    accepts_nested_attributes_for :client

end

class Client < ActiveRecord::Base

    attr_accessible :name

    validates :name, :presence => true, :length => { :maximum => 64 }

    has_many :opinions

end

レールビューに問題がありますか、それともモデルに問題がありますか?

それを修正する方法はありますか?前もって感謝します。

4

1 に答える 1

4

:client_attributesに 追加:attr_accessible

:attr_accessible一括割当のために開かれている項目を識別するために使用されます。

client_attributesコントローラに送信するリクエストには、クライアントの詳細をグループ化するために呼び出されるパラメータキーが必要です。これを一括割当で有効にして、一括割当の方法で更新するクライアントの詳細を配置できるようにする必要があります。

于 2012-09-11T15:53:03.327 に答える