2012-05-20 92 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/ –

相关问题