我将本地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
我做错了什么?也许还有其他方法。
答案 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