我正在创建产品页面,用户可以在其中上传多张产品照片。为了创建和编辑产品,我正在渲染一个表单文件。对于上传照片,我使用了nested_fields 以产品形式的照片。表单中的照片代码如下所示:
<%= f.fields_for :photos do |photo| %>
<%= image_tag photo.object.avatar.url(:thumb), unless f.object.new_record? or photo.object.new_record? %>
<%= photo.file_field :avatar, :style => "none" %>
<%= photo.link_to_remove "Remove"%>
<% end %>
<%= f.link_to_add 'Add Photos', :photos, "data-association-insertion-node"=> ".photos", "data-association-insertion-position" => "append", "data-type" => "link"%>
在产品模型中,
has_many :photos, :as => :attachable, :dependent => :destroy
accepts_nested_attributes_for :photos, :allow_destroy => true
当用户创建产品时,我使用了验证照片的存在。因此,用户必须上传照片。这件作品工作正常。
在照片模型中:
validate :validates_account_avatar
但问题在于编辑。用户可以删除所有照片。在这里,我想阻止用户删除所有照片。
如何在提交编辑后的产品时通知用户照片字段不能为空或至少应存在一张照片。
我试着用这个:
accepts_nested_attributes_for :photos, :allow_destroy => true, :reject_if => lambda { |a| a[:avatar].blank? }
但没有用。
帮助!