我正在使用 Rails 3.2.X。这是一个 has_one 关系。
一切似乎都在这里解决了:
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"=>""}}
缩短的 P 形式:
<%= 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.new(params[p][r]) 它工作正常。如果我像这样创建 P.new(params[p]) 我无法为 R 批量分配受保护的属性(即使它独立工作)您会注意到我已将 r_attributes 包含为可访问的。
下面指出的正确答案是
<%= promotion_form.fields_for(:r) do |fr| %>