12
我在has_one关系中遇到accept_nested_attributes_for问题。accep_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
我得到这个错误:
undefined method `build' for 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。
任何人都可以对这种情况有所了解吗?
非常感谢您! – adriandz 2010-03-03 21:16:15