2010-03-03 76 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。

任何人都可以對這種情況有所瞭解嗎?

回答