当我尝试执行for循环时,没有将Symbol隐式转换为Integer

问题描述 投票:-2回答:2

我试图使用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的隐式转换。

ruby-on-rails ruby for-loop hash
2个回答
0
投票

如果@products是查询Ex。 @products = Product.all

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


0
投票

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

在我尝试了你的解决方案†后,它说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的实例,而不是其他数组。分配可能发生在您的控制器中。

© www.soinside.com 2019 - 2024. All rights reserved.