2012-05-20 89 views
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| %> 

回答

4
+0

有趣的,你是對的,但我使用fields_for,它的產生R,不是r_attributes。爲什麼會是這種情況? – ckarbass

+0

所以我認爲你可以將R傳遞給fields_for表單。發現帶有前綴r_attributes的字符串文本是應該傳遞的。雖然從文檔中可以看出,你可以傳遞一個對象,所以我不清楚爲什麼這首先不起作用。 – ckarbass

+0

你有沒有'@ 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/ –

相關問題