Carrierwave多图片上传

我使用主分支和PostgreSQL的多个文件上传我的产品模型有一个名为“图像”的字符串字段,我可以附加多个图像就好了。

我不明白的是,如何从产品中删除一个图像? 我可以删除文档中描述的所有图像:

product.remove_images!
product.save

但没有找到如何删除单个图像的方法。


您是否考虑过使用嵌套表单尝试删除图像?

这是来自carrierwave的github网站的一段代码...

<%= form_for @product, html: { multipart: true } do |f| %>
  .
  .
  .
    <label>
      <%= f.check_box :remove_images %>
      Remove images
    </label>
<% end %>

...我相信你已经看到了。 虽然,当然,调用remove_images! 在你的情况下不起作用,因为这意味着对所有图像采取统一的行动。

尝试对上述内容进行以下修改,看看它是否可以帮助您对此问题进行排序并单独定位每个图像...

<%= nested_form_for @product, :html=>{ :multipart => true } do |f| %>
  .
  .
  .
  <%= f.fields_for :images do |product_form|  %>

    <%= product_form.link_to_remove "Remove this image" %>
  <% end %>
<% end %>

要做到这一点,请确保在gem 'nested_form', '~> 0.3.2'包含gem 'nested_form', '~> 0.3.2'

希望这可以帮助你。


我从@Cris学习,并在使用S3时使用以下代码片段。

def remove_image_at_index(index)
  remain_images = @product.images # copy the array
  deleted_image = remain_images.delete_at(index) # delete the target image
  deleted_image.try(:remove!) # delete image from S3
  @product.images = remain_images # re-assign back
end

我写了一篇关于这个的博客文章,并用更具体的代码创建了一个示例项目。


你应该可以在指定的图像上使用remove_image (从数组中)。 因此,您需要先以某种方式识别图像(例如images[0].remove_image!

链接地址: http://www.djcxy.com/p/86677.html

上一篇: Carrierwave multiple image upload

下一篇: where to get all the regedit policy flags?