fields_for не получает данные модели
Я пытаюсь начать использовать вложенные атрибуты в моем приложении rails 4. Моя модель настроена так:
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
модель. Это просто рендеринг формы один раз.
Я также заметил, что отправка данных не обеспечивает хэш параметров как:
{
: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
1 ответ
Решение
Проблема была в form_for
очевидно, вы ДОЛЖНЫ использовать находчивую маршрутизацию и использовать form_for
как это:
<%= form_for @person do |f| %>
Спасибо @vee за указание на это!