2012-12-13 46 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

邏輯正確。得到了分組。但有不同的元素。任何方式我得到它。看看上面的答案。 –