我正在处理一些涉及上传图片的表单。添加标准的两种表单以及当前关联的所有表单。它看起来像这样:
我有一个资产类,对于其他涉及的类(例如位置,项目)是多态的。问题是可以上传或更新项目。对于项目和位置,我有以下内容:
accepts_nested_attributes_for :assets, :allow_destroy => true, :reject_if => lambda { |a| a[:asset].blank? }
但是如果没有上传的文件,这似乎拒绝了。如果它是一个新文件,这基本上是我们想要的,但有些情况下我们只是通过资产ID更新描述。以上:reject_if将拒绝该场景。如何更新这种其他类型的信息?
THX
答案 0 :(得分:2)
我通过在params[:id]
块上添加reject_if
条件来解决它。对于您的示例,它看起来像这样:
accepts_nested_attributes_for :assets, :allow_destroy => true,
:reject_if => lambda { |a| a[:asset].blank? && a[:id].blank? }
任何现有记录都应该在嵌套哈希中返回id
属性,因此这应允许更新现有嵌套记录,同时仍允许您拒绝没有asset
的新记录(因为新记录)还没有id
)。