accepts_nested_attributes_for останавливает мой рендеринг формы? - PullRequest
4 голосов
/ 15 марта 2011

У меня есть связь между 2 моделями, Бизнес и Адрес. где у бизнеса есть зарегистрированный_адрес. Я сделал это следующим образом.

class Business < ActiveRecord::Base  
    has_one :registered_address, :class_name => "Address", :foreign_key => :business_registered_address_id
    accepts_nested_attributes_for :registered_address
end

class Address < ActiveRecord::Base
    belongs_to :business
end

Эта ассоциация отлично работает для моих целей. Когда я отрисовываю форму, используя:

= form_for @business do |form|
  = form.inputs :name => "Registered address" do
    = form.fields_for :registered_address do |address|
      = address.input :postcode
      = address.input :line_1
      = address.input :line_2
      = address.input :line_3
      = address.input :town
      = address.input :county

Ничего не отображается, только пустой набор полей.

Когда я закомментирую строку accepts_nested_attributes_for в бизнес-модели, он отображает (но не сохраняет) все поля правильно.

Кто-нибудь может увидеть, что я делаю не так?

Спасибо

Ответы [ 2 ]

6 голосов
/ 15 марта 2011

Напишите в свой контроллер для этого действия (new, как я думаю)

def new
  @business = Business.new
  @business.build_registered_address
  ...
end

или в вашей форме @business.registered_address.new

= form_for @business do |form|
  = form.inputs :name => "Registered address" do
    = form.fields_for :registered_address, @business.registered_address.new do |address|
      = address.input :postcode
      = address.input :line_1
      = address.input :line_2
      = address.input :line_3
      = address.input :town
      = address.input :county
1 голос
/ 15 марта 2011

form.fields_for отображает свой блок для каждого объекта в @ business.registered_adress. Если ваш массив пуст, ничего не показывалось.

Вы можете написать, например, на своем контроллере:

@bussines.registered_address.new

И тогда приложение отобразит все формы

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...