Вложенные формы Rails 3 не будут работать

#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. Есть плюсы по сравнению с моим решением?