нет неявного преобразования Symbol в Integer, когда я пытаюсь сделать цикл for - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь использовать для цикла, чтобы показать больше изображений на одной странице.

Я пытался

 <% @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

  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.

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Этот ответ основан на вашем (удаленном) комментарии:

После того, как я попробовал ваше решение , там написано 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, а не другие массивы. Назначение, вероятно, происходит в вашем контроллере.

0 голосов
/ 26 марта 2019

Если @products является запросом Пример.@products = Product.all

Вы можете использовать product.name вместо [: name]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...