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

ユーザーpdgに追加することで をバイパスできますが、. として挿入されます。:pgd_idsattr_accessiblelink_idlink_idNULL

4

1 に答える 1

0

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

user.rb

attr_accessible :rights_attributes
has_may :rights
accepts_nested_attributes :rights

次に、権利フィールドをfields_forブロックにラップする必要があります。あなたはFormtasticを使用しているようですが、私はよく知らないのですが、次のようになっているはずです。

<%= 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 %>

Railscastには、ネストされたフォームに無料のスクリーンキャストが多数ありますが、上記のコードを確認しても問題は解決しません。

于 2012-02-17T01:30:01.297 に答える