我要显示base64图像。
我在下面显示我已经走了多远。 sudo -u www-data bash
的定义如下:
images_base64
如果我将其放在一个段落中并显示,我将得到:
def images_base64(images)
images.map {|image| image.image}
end
我这样使用它:
["iVBSUhEUAA+gAAA0CAA...a long string"]
我得到错误:=image_tag 'data:image/png;base64, '+images_base64(@document.meta.images), width: '450px'
。看来我无法将返回的数组转换为字符串。
答案 0 :(得分:3)
听起来您需要遍历图像并显示它们,例如:
- images_base64(@document.meta.images).each do |image|
= image_tag "data:image/png;base64, #{image}", width: '450px'
假设您要引用的“长字符串”就是您要附加到'data:image/png;base64,
上的内容。
这将为images_base64(@document.meta.images)
中的每个元素创建一个图像标签,在您的示例中似乎只是一个。
希望有帮助-如果您有任何疑问,请告诉我。
答案 1 :(得分:1)
已经提供并接受了一个很好的答案,但是让我们解释一下为什么错误实际上使您失望,并且询问方式的问题实际上并不是您要解决的问题。
"No implicit conversion of Array into String"
您正在尝试在视图内部呈现必须以字符串形式结束的数组,因为HAML呈现为HTML字符串,最终由浏览器读取。因此,简单的答案是,当尝试在Rails视图模板内的数组中呈现项目时,必须使用红宝石中的.each
块对数组进行迭代,并确保该循环中返回的任何数据红宝石都可以评估为字符串。
答案 2 :(得分:0)
地图将返回一个数组,因此您需要索引该数组。由于它可以处理多个base64图像,因此您可能需要运行一个循环,以便显示每张照片。