2

私はこれに多くの時間を費やし、それを引っ張って髪の半分を失いました。助けて。ネストされた属性を更新する警告:保護された属性を一括割り当てできません:エラー

user

has_may :rights 
    attr_accessible :rights_attributes 

right

belongs_to :user 
    attr_accessible :user_id, :pgd_id, :link_id 

ビュー:

<%= semantic_form_for @user, :url => {:action => "rightsupdate", :id => @user.id} do |f| %>$ 
    <%= f.inputs do %>$ 
    <%= f.input :pgds, :as => :check_boxes, :required => false %>$ 
    <% end %>$ 
    <%= f.input :link_id, :value => @owner.link_id, :as => :hidden %>$ 
    <%= f.buttons %>$ 
<% end %>$ 

が、私はそれを言って続けて更新したとき:

WARNING: Can't mass-assign protected attributes: pgd_ids, link_id 

attr_accessibleに追加しますが、link_idを追加することで、pdgを迂回することができます。 link_idNULLとして挿入されます。

+0

申し訳ありませんが、コードの輪郭が崩れました。 – nafkot

+0

少し追加したときにうまくいきました。段落をコードの書式と区別するために空白行が必要です。 – sarnold

+0

ありがとう@sarnold – nafkot

答えて

0

最初にモデルにaccepts_nested_attributesが含まれていることを確認する必要があります。

user.rb

attr_accessible :rights_attributes 
has_may :rights 
accepts_nested_attributes :rights 

あなたはその後、fields_forブロックに権利フィールドをラップする必要があります。

<%= semantic_form_for @user, :url => {:action => "rightsupdate", :id => @user.id} do |f| %> 
    <%= f.semantic_fields_for :rights do |builder| %> 
    <%= builder.inputs do %> 
     <%= builder.input :pgds, :as => :check_boxes, :required => false %> 
    <% end %> 
    <%= builder.input :link_id, :value => @owner.link_id, :as => :hidden %> 
    <%= builder.buttons %> 
    <% end %> 
<% end %> 

Railscastsは上記をチェックアウトする価値があるだろう、ネストされたフォーム上の自由なスクリーンキャストの数を持っている:あなたは、私は精通していないが、私はそれがこのようになるはずだと思うFormtasticを、使用しているように見えますコードは問題を解決しません。

+0

ありがとうございます。 accepts_nested_attributes_for:権利は既にそこにあります。あなたのビューコードはオプションを複製してしまいました。私はそれを修正しようとします。 – nafkot

+0

上記の解決方法は更新されません。しかし返信のおかげで@ nmott私の古いものはまだ大量更新することはできない – nafkot

関連する問題