如何在 ActiveAdmin 中使用 ActiveStorage `has_many_attached` 编辑多个附加图像

Asp*_*ped 5 ruby-on-rails formtastic activeadmin rails-activestorage

我有一个简单的模型,可以通过ActiveStorage处理文件存储附加多个图像。

我正在使用ActiveAdmin编辑我的模型并上传/附加图像 - 到目前为止没有问题。

问题是,当我想编辑我的模型并添加新图像时,之前的图像会被删除,而只会添加新的图像。

我可以预览已经附加的图像,也可以单独删除它们,但是我如何实现,通过上传新图像,旧图像不会被删除?

我的型号:

class Post < ActiveRecord::Base
  has_many_attached :images
end
Run Code Online (Sandbox Code Playgroud)

我的 ActiveAdmin 页面:

ActiveAdmin.register AdminPost do
  permit_params images:[]

  form do |f|
    f.input :images, as: :file, input_html: { multiple: true }

    if @resource.images.exists?
      @resource.images.map do |m|
        para image_tag m
      end
    end
  end 
end
Run Code Online (Sandbox Code Playgroud)

ros*_*nd 13

假设您使用的是 Rails 6.0+;您可以通过在您的环境中添加以下代码来解决这个问题(即 - development.rb ) https://github.com/rails/rails/issues/35817#issuecomment-628654948

config.active_storage.replace_on_assign_to_many = false
Run Code Online (Sandbox Code Playgroud)

以你的形式,

form do |f|
 f.input :images, as: :file, input_html: { multiple: true }
 f.object.images.each do |image|
  span image_tag(image)
 end
end 
Run Code Online (Sandbox Code Playgroud)