如何在 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 可以作为字符串进行评估。
我想显示 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 可以作为字符串进行评估。