У меня проблемы с accepts_nested_attributes_for в отношении has_one.
Модели: купля-продажа.
class Purchase < ActiveRecord::Base
has_one :sale, :dependent => :destroy
accepts_nested_attributes_for :sale
end
class Sale < ActiveRecord::Base
belongs_to :purchase
end
В контроллере / новое действие:
@purchase = Purchase.new(
:club_id => @club.id,
:subcategory_id => subcategory.id
)
В представлении (HAML):
- form_for(@purchase) do |f|
# some fields for purchase
- f.fields_for :sale do |s|
= s.text_field :amount, :size => 6
# and so on
ПРОБЛЕМА: это на самом деле не отображает какие-либо поля ввода для продажи на мой взгляд. Поля покупки отображаются нормально, но поля продажи не отображаются.
Если я добавлю эту строку в контроллер:
@purchase.sale.build
Я получаю эту ошибку:
неопределенный метод `build 'для nil: NilClass
Что еще более странно, если я изменю тип ассоциации на has_many вместо has_one, создав, таким образом:
class Purchase < ActiveRecord::Base
has_many :sales, :dependent => :destroy
accepts_nested_attributes_for :sales
end
Все начинает работать просто отлично - поля продаж начинают появляться, на мой взгляд, @ purchase.sales.build не возвращает ошибку и так далее. Конечно, это не очень помогает мне, так как предполагается, что это has_many, а не has_one.