#<ImagesUploader::UploadedFile:0x00007f8a0f0c0760> 的未定义方法“each”

undefined method `each' for #<ImagesUploader::UploadedFile:0x00007f8a0f0c0760>

在我看来我有这个:

<% @item.images.each do |image| %>
 <%= image_tag image.images_url(:large) %>
<% end %>

如果我上传了 一张 图片,它会 returns 错误 undefined method 'each' for #<ImagesUploader::UploadedFile:0x00007f8a0f0c0760>,但如果我上传多张图片,这个视图就可以正常工作。或者,没有封闭块的 <%= image_tag @item.images_url(:large) %> 也可以正常工作。

在从 ActiveStorage 切换到 Shrine 之前我没有遇到这个问题。

如何编写我的视图,使其显示所有上传的图像,无论是一张还是多张?

您可以执行以下操作

<% (Array @item.images).each do |image| %>

这将始终 return 数组,检查以下示例。

2.5.1 :001 > Array 5
 => [5]
2.5.1 :002 > Array [5]
 => [5]
2.5.1 :003 > Array []
 => []