Подключите логику группы / сортировки контроллеров rails к таблице представлений - PullRequest
0 голосов
/ 26 октября 2018

У меня есть класс инвентаря (склада), для которого я сгенерировал таблицу, которую теперь мне нужно сгруппировать по номеру тега, а затем по категории (я хочу создать строку, идентифицирующую каждую категорию), а также отсортировать, как только это будет сделано. , Как мне связать эту логику с таблицей, которую я собрал?

Я пытался присоединить переменную экземпляра к самой логике (@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>
...