2012-11-04 23 views
1

這可能是我失明的情況下... 不知怎的,我不能讓我的layout_positions_attributes在layout_positions到達無法取得accepts_nested_attributes在軌運行3

l = Layout.new 
… 
[17] pry(main)> l.layout_positions 
=> [] 
[18] pry(main)> l.layout_positions_attributes=[{:name=>'xxx'}] 
=> [{:name=>"xxx"}] 
[19] pry(main)> l.layout_positions 
=> [] # WTF! 
[20] pry(main)> l.layout_positions.build({:name=>'xxx'}) 
=> #<LayoutPosition id: nil, name: "xxx", active: true, columns: nil, rows: nil, layout_id: nil, pos: -1> 
[21] pry(main)> l.layout_positions 
=> [#<LayoutPosition id: nil, name: "xxx", active: true, columns: nil, rows: nil, layout_id: nil, pos: −1>] 

的父類:

class Layout < ActiveRecord::Base 
    attr_accessible :name, :active, :layout_positions_attributes 
    has_many :layout_positions 
    accepts_nested_attributes_for :layout_positions, 
           :reject_if => lambda { |a| a[:content].blank? }, 
           :allow_destroy => true 
    validates_presence_of :name 
end 

並且屬性應該去的地方...

class LayoutPosition < ActiveRecord::Base 
    attr_accessible :name, :active, :columns, :rows, :pos 
    belongs_to :layout 
    validates_presence_of :name 
end 

回答

0

你告訴它t o如果layout_position對象的content爲空,則拒絕它。在你的例子中,在「WTF」之上,你沒有通過任何內容。因此這是刪除屬性。

調用build不依賴於accepts_nested_attributes_for,所以將工作得很好。

+0

謝謝,我知道它必須是這樣的愚蠢! – Jan