2010-03-03 58 views
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。

任何人都可以对这种情况有所了解吗?

回答