0

我有问题。下面的代码是rails中ruby的视图代码

<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

谁能给我解决方案?它应该足够通用以迭代数组。

先感谢您。

4

3 回答 3

2
<% 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 %>
于 2012-12-13T12:11:32.337 回答
1

使用 group_by 语句

更新

 <% Array(@bookmark).group_by(&:url).each do |url, books| %>
 <tr>
 <td><%= url %></td>
 <td><%= books.map(&:tags).flatten.join(',') %></td>
 </tr>
于 2012-12-13T12:12:09.133 回答
0
<% Array(@bookmark).uniq.each do |book| %>
 <tr>
 <td><%= book.url %></td>
   <td><%= book.tags %></td>
 </tr>
<% end %>

以上将起作用。

于 2012-12-13T12:05:13.373 回答