У меня есть класс инвентаря (склада), для которого я сгенерировал таблицу, которую теперь мне нужно сгруппировать по номеру тега, а затем по категории (я хочу создать строку, идентифицирующую каждую категорию), а также отсортировать, как только это будет сделано. , Как мне связать эту логику с таблицей, которую я собрал?
Я пытался присоединить переменную экземпляра к самой логике (@tags_grouped_by_product_and_category
) и вложить таблицу в @tags_grouped_by_product_and_category.each_with_index do |(product, tag), index| %>
, но она все еще не подхватывает ее - размещение ее вокруг tbody
или table
просто делает весь набор повторяется без сортировки или группировки.
#warehouse controller
@warehouse = Warehouse.includes(
tags: [product: :primary_category]).find(params[:id])
#this is pulling up data in the console, but I haven't worked out how to interact directly with :primary_category in the code; I need to be able to pull up the :name from this eventually (secondary issue)
@tags = @warehouse.tags
@tags.group_by do |tag|
tag.product || tag.product_id
end.sort_by do |product, tag|
if product.is_a? Product
product.try(:name).to_s
else
"[DELETED PRODUCT ID: #{tag.first.product_id}]"
end
end.group_by do |product, tag|
if product.is_a? Product
product.primary_category || product.category_assignments.order(created_at: :asc).try(:first).try(:primary_category)
else
nil
end
end.sort_by do |category, products|
category.try(:position) || Float::INFINITY
end
Вот таблица, для справки:
<table class="table table-striped">
<thead>
<% @attributes.each do |attribute| %>
<th scope="col" class="attribute-header"><%= attribute[:label]%></th>
<% end %>
</thead>
<tbody>
# @tags_grouped_by_product_and_category was here
<% @tags.each do |tag| %>
<tr>
<td>
<%= tag.product.name %>
</td>
<td>
<%= "#" + tag.number %>
</td>
<td><%= tag.trackable_type %></td>
</tr>
<% end %>
</tbody>
</table>