我有问题。下面的代码是ruby in 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>
这会产生类似的结果:
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
有人能为我提供解决方案吗?它应该足够通用以迭代数组。
提前谢谢。
答案 0 :(得分: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 %>
答案 1 :(得分: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>
答案 2 :(得分:0)
<% Array(@bookmark).uniq.each do |book| %>
<tr>
<td><%= book.url %></td>
<td><%= book.tags %></td>
</tr>
<% end %>
以上将有效。