Может ли хеш Ruby иметь массив внутри своих значений? - PullRequest
0 голосов
/ 05 января 2019

Мне нужно отобразить список товаров по категориям. Я думал о создании продукта с категорией в качестве ключа и списком всех продуктов в этой категории в качестве значения. Можно ли это реализовать таким образом?

Будет ли это работать?

@products = Product.all

@categories = @products.uniq.pluck(:category)
@products_by_category = Hash.new

@categories.each do |category|
  @products_by_category[:category] = Product.where(:category => category)
end

Я использовал это для отображения вышеуказанного хэша в моем виде:

<% @products_by_category.each do |key, value| %>
<th> <%= key %> <th>
  <% value.each do |product| %>
    <tr>
      <td><%= product.title %></td>
      <td><%= product.category %></td>
      <td><%= product.rating %></td>
      <td><%= link_to 'Show', product, :class => "btn btn-primary"%></td>
      <td><%= link_to 'Edit', edit_product_path(product), :class => "btn btn-primary" %></td>
      <td><%= link_to 'Destroy', product, method: :delete, data: { confirm: 'Are you sure?' }, :class => "btn btn-primary" %></td>
    </tr>
  <% end%>
<% end %>

Но на дисплее вместо имени категории я просто получаю строковый литерал "category" (<th> <%= key %> <th>, кажется, печатает строковый литерал "category" вместо значения категории)

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Использование @products_by_category[category] вместо @products_by_category[:category] отлично сработало для меня! Спасибо @Vasilisa за это решение!

0 голосов
/ 05 января 2019

Должно работать, но есть более простой способ

Product.all.group_by(&:category)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...