我试图使用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 %>
这是我的家庭控制器,我在下面添加:class HomeController <ApplicationController
def index
@ad = {
title: "大型广告",
des: "这是广告",
action_title: "这是广告",
}
@products = {
id: "1",
name: "柳橙汁",
description: "好喝的柳橙汁",
image_url: "https://images.pexels.com/photos/96974/pexels-photo-96974.jpeg?h=350&auto=compress&cs=tinysrgb",
}
end
end
它没有显示Symbol到Integer的隐式转换。
如果@products
是查询Ex。 @products = Product.all
您可以使用product.name
而不是[:name]
此答案基于您(现已删除)的评论:
在我尝试了你的解决方案†后,它说
undefined method `name' for [:id, "1"]:Array
†使用
product.name
而不是product[:name]
你的@products
数组包含其他2元素数组,如下所示:
@products = [[:id, "1"], [:id, "2"], [:id, "3"]]
因此每个product
引用这些内部数组之一,product[:name]
导致错误消息:
product = @products.first
#=> [:id, "1"]
product[:name]
# TypeError (no implicit conversion of Symbol into Integer)
你可以通过改变@products
数组中的内容来解决这个问题。它应该是Product
的实例,而不是其他数组。分配可能发生在您的控制器中。