我正在尝试在rails 4 app中使用嵌套属性。我的模型设置如下:
class Person < ActiveRecord::Base
has_many :addresses
accepts_nested_attributes_for :addresses
end
class Address < ActiveRecord::Base
belongs_to :person
end
我的观点是:
<%= form_for(:person, :url => {:action => 'update', :id => @person.id}) do |f| %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<%= f.fields_for(:addresses) do |builder| %>
<p>
<%= builder.label :street, "Street" %><br />
<%= builder.text_field(:street) %>
</p>
<% end %>
<p><%= f.submit "Submit" %></p>
<% end %>
与http://guides.rubyonrails.org/form_helpers.html
几乎完全相同但我的观点并未将builder
表单与address
模型相关联。它只是渲染表单一次。
我还注意到提交数据不会将params哈希提供为:
{
:person => {
:name => 'John Doe',
:addresses_attributes => {
'0' => {
:kind => 'Home',
:street => '221b Baker Street',
},
'1' => {
:kind => 'Office',
:street => '31 Spooner Street'
}
}
}
}
但是喜欢:
{"person"=
{"name"=>"John Smith", "adresses"=>
{"street"=>"221 Baker"}
}
}
我哪里错了?
PS - 控制器...我已经尝试了一个新对象,一个已经存在且具有与之关联的地址。
def nest
@person = Person.find(48)
#@person = Person.new
#4.times { @person.addresses.build }
end
答案 0 :(得分:1)