#ruby-on-rails-3 #nested-forms
#ruby-on-rails-3 #вложенные формы
Вопрос:
Моя accommodation
модель:
class Accommodation < ActiveRecord::Base
...
has_one :address
...
accepts_nested_attributes_for :address
...
end
Моя address
модель:
class Address < ActiveRecord::Base
belongs_to :accommodation
end
Моя accommodation _form.html.haml
частичная
=form_for [:panel,@accommodation], :html => {:class=>'accommodation'} do |f|
%fieldset
%legend
Adres
=f.fields_for :address do |address_f|
=address_f.label :street, "Ulica"
=address_f.text_field :street
%div
Проблема в том, что поле для street не будет отображаться. Это отображается, когда я меняю:address на @accommodation.build_address, но тогда форма не принимается.
Как сделать это правильно, чтобы работать?
Комментарии:
1. Как выглядят ваши
new
иedit
действия в вашем контроллере?2. что вы имеете в виду
the form is not accepted
?3. Какая-то ошибка, сейчас не помню.
Ответ №1:
Найдено решение:
fields_for
должно выглядеть так:
=f.fields_for :address_attributes, @accommodation.address do |address_f|
Теперь это работает идеально.
Комментарии:
1. Вы знаете, что это работает, но каждый раз, когда вы пытаетесь отредактировать,
accommodations
это создает новыеaddress
сaccommodations_id
значением null, поэтому я также ищу правильное решение
Ответ №2:
попробуйте
=f.fields_for :address, @accomodation.address.new do |address_f|
Комментарии:
1. Есть плюсы по сравнению с моим решением?