2

我正在使用 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| %>
4

1 回答 1

4

表格应该发布r_attributes,而不是rhttp ://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html

于 2012-05-20T06:04:07.143 回答