2016-03-20 1 views
2

J'ai un tableau (@items) de hashs avec cette structure:Comment group_by ce tableau de hashs (Enumerable) [Ruby, Rails]

@items:

{'item' => item, 'stickers' => stickers} 
... 

Et le item est un ActiveRecord avec l'attr Je veux group_by: csgo_type.

Mon code:

<% @items.group_by { |d| d['item'][:csgo_type] }.each do |a| %> 
    <%= render partial: 'item', locals: {a: a} %> 
<% end %> 

Mais ce groupe ne marche pas du tout.

Je suis à la recherche d'un résultat comme celui-ci:

[ { :csgo_type => #ActiveRecord(csgo_type 1), :items => [array of some @items of this type] }, {...} ...]

+1

Il est excellent que vous avez trouvé une solution à votre problème ... bravo! Chez SO, nous vous encourageons à répondre à votre propre question, mais il est préférable de l'ajouter ci-dessous en utilisant la case «Votre réponse» plutôt que de l'éditer dans votre question. Souhaitez-vous envisager de modifier votre question pour supprimer la réponse et l'ajouter en utilisant la case «Votre réponse» ci-dessous? –

+0

Fait, merci! :RÉ –

Répondre

2

Solution:

<% @items.group_by { |d| d['item'].csgo_type }.each do |a,b| %> 
    === <%= a.name %> 
    <% b.each do |cada| %> 
     <%= render partial: 'item', locals: {cada: cada, i: 1} %> 
    <% end %> 
<% end %>