2
我正在使用Rails 3.2.X.這是一個關係。Rails 3.2無法批量分配受保護的屬性:r
似乎一切都搞定了這裏:
class P < ActiveRecord::Base
has_one :r
accepts_nested_attributes_for :r
attr_accessible :s, :r_attributes
end
class R < ActiveRecord::Base
attr_accessible :a, :b, :c
belongs_to :p
end
什麼是從形式發佈
"p"=>{"s"=>"5/6/2012", "r"=>{"a"=>"hello", "b"=>"world", "c"=>""}}
縮短磷形態:
<%= form_for(@p) do |f| %>
<%= render :partial => "r/form", :locals => { :p_form => f, :r => @p.r } %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
縮短R型偏
<%= p_form.fields_for(r) do |fr| %>
如果我創建R這樣R.new(params [p] [r])它工作正常。 如果我創建P這樣P.new(params [p]) 我得到不能批量分配R的受保護屬性(即使它獨立工作) 您會注意到我已將r_attributes包括在內。
如下指出,正確的答案是
<%= promotion_form.fields_for(:r) do |fr| %>
有趣的,你是對的,但我使用fields_for,它的產生R,不是r_attributes。爲什麼會是這種情況? – ckarbass
所以我認爲你可以將R傳遞給fields_for表單。發現帶有前綴r_attributes的字符串文本是應該傳遞的。雖然從文檔中可以看出,你可以傳遞一個對象,所以我不清楚爲什麼這首先不起作用。 – ckarbass
你有沒有'@ p.build_r'在你的控制器中?如果是的話,你需要使用:'p_form.fields_for:r do | fr |'。我做了一個小例子:https://github.com/eicca/attrs_test/blob/master/app/views/customers/_form.html.erb。另外,請參閱這篇文章:http://railstic.com/2009/06/nested-object-forms-with-has_one-relation/ –