如何在Rails中将数组转换为字符串

时间:2018-10-16 22:38:15

标签: ruby-on-rails ruby haml

我要显示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' 。看来我无法将返回的数组转换为字符串。

3 个答案:

答案 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图像,因此您可能需要运行一个循环,以便显示每张照片。