Мне нужно отобразить список товаров по категориям. Я думал о создании продукта с категорией в качестве ключа и списком всех продуктов в этой категории в качестве значения. Можно ли это реализовать таким образом?
Будет ли это работать?
@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" вместо значения категории)