class Gift < ActiveRecord::Base
has_many :contributions
accepts_nested_attributes_for :contributions, :reject_if => proc { |a| a['amount'].blank? }
贡献有一个 :nickname 属性。在 :new 表单中,它预先填充了用户的真实姓名。用户可能决定将其更改为“Uncle Bob”(或其他名称)。不幸的是,使用 :reject_if 时,如果贡献中未指定金额,则在 @gift 无效的情况下重新加载 :new 时,:nickname 更改会丢失。发生这种情况是因为嵌套的tribution_attributes 被拒绝。我们如何保留 :nickname 更改并仅在 @gift 实际保存时处理拒绝?
class Gift < ActiveRecord::Base
has_many :contributions
accepts_nested_attributes_for :contributions,
:reject_if => proc { |a| a['amount'].blank? }
end
class Contribution < ActiveRecord::Base
belongs_to :gift
validates_presence_of :nickname, :amount
end
...以礼物形式...
f.text_field :nickname, :value => (params[:gift][:contributions_attributes]['0'][:nickname] rescue @m.full_name)
这会保留 :nickname 通过失败的验证进行的更改,并且仍然丢弃仅包含 :nickname 的嵌套贡献。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)