activeadmin carrierwave多输入:预览现有图片

时间:2016-02-13 11:35:17

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 activeadmin carrierwave

我将本地carrierwave多个上传器实现为activeadmin。 图像正确保存到数据库。我可以在FORM中预览单个输入的现有图像,这样:

f.input :background, :as => :file, :hint => image_tag(f.object.background.url(:thumb)`)

但我无法在FORM中预览多个输入的现有图像:

f.input :images, as: :file, input_html: { multiple: true}, :hint => f.object.images.each {|i| image_tag(i.url(:thumb))}

它在Web浏览器中没有渲染。但是,如果我将此代码放入content_tag:

f.input :images, as: :file, input_html: { multiple: true}, :hint => content_tag(:div, f.object.images.each {|i| image_tag(i.url(:thumb))})

它给我这样的东西:

[#<ProductAdditionalImagesUploader:0x007f5f430339d8 @model=#<Basrelief id: 1,
title: "Барельеф", description: "Барельеф...",
price_m: #<BigDecimal:7f5f42042600,'0.1E4',9(18)>,
created_at: "2016-02-07 22:31:34", updated_at: "2016-02-12 23:42:02",
background: "Bar_8.jpg", images: ["1.jpg", "2.jpg"]>, @mounted_as=:images,
@storage=#<CarrierWave::Storage::File:0x007f5f43033938
@uploader=#<ProductAdditionalImagesUploader:0x007f5f430339d8...

我想注意,在SHOW中,我可以这样预览这些图像:

 row :images do
        ul do
          basrelief.images.each do |image|
            li do
              image_tag image.url(:thumb)
            end
          end
        end
      end

我做错了什么?也许还有其他方法。

1 个答案:

答案 0 :(得分:2)

不是multiple: true给你带来麻烦。您试图将这些图像与.each一起输出的方式。使用.map然后使用<br>html_safe字符串

加入它们

更改此

f.input :images, as: :file, input_html: { multiple: true}, :hint => f.object.images.each {|i| image_tag(i.url(:thumb))}

到这个

hint = f.object.images.map{|i| image_tag(i.url(:thumb)) }.join('<br>').html_safe
f.input :images, as: :file, input_html: { multiple: true}, :hint => hint