2012-12-13 26 views
0

我有问题。这下面的代码是红宝石在轨道意见码如何通过数组获得独特的元素,并将它们分组在轨道上的红宝石上

<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> 

这会产生这样的:

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

但是,我想它作为

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

谁能给我提供了解?它应该足够通用以迭代数组。

预先感谢您。

回答

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

太棒了...谢谢。 –

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

以上将起作用。

+0

都能跟得上没有工作。它是一样的。 –

1

使用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

'标签'将是书籍的数组。 –

+0

@ValeryKvon吧。 –

+0

逻辑正确。得到了分组。但有不同的元素。任何方式我得到它。看看上面的答案。 –