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

How to convert an Array into String in Rails

我想显示 base64 图片。

我在下面显示了我的进度。 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'

我收到错误:No implicit conversion of Array into String。看来我不能将返回的数组转换成字符串。

Map 将要 return 一个数组,因此您需要对该数组进行索引。由于它处理多张 base64 图像,您可能需要 运行 一个循环以便显示每张照片。

听起来你需要循环遍历图像并显示它们,例如:

- images_base64(@document.meta.images).each do |image|
  = image_tag "data:image/png;base64, #{image}", width: '450px'

假定您引用的 'long string' 是您想要附加到 'data:image/png;base64, 的内容。

这将为 images_base64(@document.meta.images) 中的每个元素创建一个图像标签,在您的示例中似乎只有一个。

希望对您有所帮助 - 如果您有任何问题,请告诉我。

已经提供并接受了一个很好的答案,但是让我们解释一下为什么这个错误实际上让您失望,并且问题的提问方式并不是您真正想要解决的问题。

"No implicit conversion of Array into String"

您正在尝试在视图中呈现一个数组,该数组必须以字符串形式结束,因为 HAML 被呈现为 HTML 字符串,最终由浏览器读取。所以简单的答案是,当试图在 rails 视图模板中呈现数组内的项目时,您必须使用 ruby 中的 .each 块迭代数组,并确保无论什么该循环中返回的数据 ruby 可以作为字符串进行评估。