我正在创建产品页面,用户可以在其中上传多张产品照片。要创建和编辑产品,我正在渲染表单文件。为了上传照片,我已经使用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? }
但没用。
帮助!