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 

我可以通過將:pgd_ids添加到用戶attr_accessible而不是link_id來繞過pdg。所述link_id插入作爲NULL

+0

對不起代碼大綱弄亂。這是工作正常,當我說這 – nafkot 2012-02-17 01:07:31

+0

我與它擺弄一點點 - 你需要空行從代碼格式化分隔段落。 – sarnold 2012-02-17 01:15:51

+0

感謝@sarnold – nafkot 2012-02-17 01:18:44

回答

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

Railscasts有嵌套形式這將是值得的上述檢查出了許多免費的截屏代碼不能解決問題。

+0

謝謝。 accepting_nested_attributes_for:權利已經存在。您的視圖代碼最終重複了選項。我會嘗試修改它。 – nafkot 2012-02-17 01:40:35

+0

上述解決方案不會更新。但感謝@nmott我的老人仍然說不能大規模更新 – nafkot 2012-02-17 02:01:46

相關問題