Ruby on rails 当我尝试执行for循环时,没有将符号隐式转换为整数

Ruby on rails 当我尝试执行for循环时,没有将符号隐式转换为整数,ruby-on-rails,ruby,for-loop,hash,Ruby On Rails,Ruby,For Loop,Hash,我试图使用for循环在一个页面上显示更多图像 我试过了 <% @products.each do |product| %> <div class="col-xs-3"> <div class="thumbnail"> <img src="https://images.pexels.com/photos/96974/pexels-photo-96974.jpeg?h=350&auto=

我试图使用for循环在一个页面上显示更多图像

我试过了

 <% @products.each do |product| %>
         <div class="col-xs-3">
          <div class="thumbnail">
            <img src="https://images.pexels.com/photos/96974/pexels-photo-96974.jpeg?h=350&auto=compress&cs=tinysrgb" alt="...">
              <div class="caption">
              <h3><%= product[:name] %></h3>
              <p><%= product[:description] %></p>
              <p><a href="#" class="btn btn-primary" role="button">Button</a> <a href="#" class="btn btn-default" role="button">Button</a></p>
              </div>
            </div>
          </div>
<% end %>

它不显示符号到整数的隐式转换。

如果
@products
是一个查询,例如
@products=Product.all


您可以使用
product.name
而不是[:name]

此答案基于您(现已删除)的评论:

在我尝试了您的解决方案†之后,它显示了[:id,“1”]:数组的
未定义的方法'name'


†使用
product.name
而不是
product[:name]

您的
@products
数组包含以下其他2元素数组:

@products = [[:id, "1"], [:id, "2"], [:id, "3"]]
因此,每个
产品
都引用这些内部数组中的一个,并且
产品[:name]
会导致错误消息:

product = @products.first
#=> [:id, "1"]

product[:name]
# TypeError (no implicit conversion of Symbol into Integer)

您可以通过更改
@products
数组中的内容来解决此问题。它应该是
产品
的实例,而不是其他数组。分配可能发生在您的控制器中。

在此返回错误跟踪@products中包含什么?它是集合还是阵列?什么是
@products
?它返回什么?请添加分配
@products
(可能是您的控制器操作)的代码。
product.name
product['name']
&
product[:name]
所有这些都提供相同的信息。
product = @products.first
#=> [:id, "1"]

product[:name]
# TypeError (no implicit conversion of Symbol into Integer)