2012-12-13 2 views
0

J'ai un problème. Ce ci-dessous le code est le code de vues de rubis dans des railsComment obtenir des éléments uniques à travers tableau et les regrouper en ruby ​​sur les rails

<table > 
<tr> 
    <th>Url</th> 
    <th>Tags</th> 
</tr> 
<% @array_bookmark = @bookmark.class == Array ? @bookmark : [@bookmark] %> 
<% Array(@bookmark).each do |book| %> 
<tr> 
<td><%= book.url %></td> 
<td><%= book.tags %></td> 
</tr> 
<% end %> 
</table> 

Cela donne quelque chose comme:

Url     Tags 
www.mrabhiram.tumblr.com abhi 
www.mrabhiram.tumblr.com blog 
google.com     google 
google.com     blog 

Mais, je veux l'obtenir comme

Url     Tags 
www.mrabhiram.tumblr.com abhi,blog 
google.com     google,blog 

Quelqu'un peut-il me fournir la Solution? Il devrait être suffisamment générique pour parcourir le tableau.

Merci à l'avance.

Répondre

1
<% Array(@bookmark).group_by {|b| b.url}.each do |url, books| %> 
    <tr> 
    <td><%= url %></td> 
    <td><%= books.map {|b| b.tags}.flatten.uniq.join(" ") %></td> 
    </tr> 
<% end %> 
+0

Génial ... Merci. –

0
<% Array(@bookmark).uniq.each do |book| %> 
<tr> 
<td><%= book.url %></td> 
    <td><%= book.tags %></td> 
</tr> 
<% end %> 

ce qui précède fonctionnera.

+0

Non ne fonctionne pas. C'est donner la même chose. –

1

utilisation Déclaration de group_by

upd

<% Array(@bookmark).group_by(&:url).each do |url, books| %> 
<tr> 
<td><%= url %></td> 
<td><%= books.map(&:tags).flatten.join(',') %></td> 
</tr> 
+1

'tags' serait un tableau de livres. –

+0

@ValeryKvon droite. –

+0

La logique est correcte. J'ai le groupement. Mais a eu différents éléments. De toute façon je l'ai eu. Regardez la réponse ci-dessus. –

Questions connexes