1

これは私が盲目である場合かもしれません…どういうわけか私は私のlayout_positions_attributesをlayout_positionsに到達させることができません

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

そして、属性がどこに行くべきか…</ p>

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

1 に答える 1

0

オブジェクトのが空白contentの場合は拒否するように指示しています。layout_positionあなたの例では、「WTF」の上では、コンテンツを通過していません。したがって、これは属性を削除しています。

呼び出しbuildは依存しないため、問題なくaccepts_nested_attributes_for機能します。

于 2012-11-04T22:38:59.853 に答える