2010-10-27 90 views
2

目前這只是一個很長的名單。我如何顯示每行5條記錄而不是1條?每行顯示5條記錄?

<% @tags.each do |tag| %> 

<p><%= tag_search(tag) %></p> 

<% end %> 

目前

tag1 
tag2 
tag3 
tag4 
tag5 
tag6 
tag7 
... 

所需

tag1 tag2 tag3 tag4 tag5 
tag6 tag7 

我知道這是非常基本的,但我不能設法找到合適的谷歌搜索條款以我自己的答案。 謝謝!

這是我最後使用

<table> 
<% @tags.in_groups_of(4, false) do |row_tag| %> 
    <tr> 
    <% for tag in row_tag %> 
     <td><%= tag_search(tag) %></td> 
    <% end %> 
    </tr> 
<% end %> 
</table> 

回答

10

可以使用的ActiveSupport方法in_groups_of採取數組並把它分成組

<% @tags.in_groups_of(5).each do |tag_array| %> 
    <% tag_array.each |tag| %> 
    ... 

Original Doc from Rails Docs

%w(1 2 3 4 5 6 7).in_groups_of(3) {|g| p g} 
    ["1", "2", "3"] 
    ["4", "5", "6"] 
    ["7", nil, nil] 
+0

完美,謝謝 – Jason 2010-10-27 21:30:31

1

有可能是一個更好的方式來做到這一點,但是這將工作:

<% @tags.each do |tag, i| %> 
     <%= '<p>' if i == 1 %> 
     <%= tag_search(tag) %> 
     <% if i == 5 %> 
      <% i = 0 %> 
      </p> 
     <% end %> 
<% end %> 
+1

請避免在視圖中設置變量。 – 2010-10-27 21:15:36

2
<% @tags.each_with_index do |tag, index| %> 
    <%= tag_search(tag) %> 
    <%= "<br />" if (index % 5).zero? %> 
<% end %> 

您還可以使用的ActiveSupport的in_group_of

0

。每個應該在內部循環

+1

嗨邁克 - 內循環?也許你可以提供代碼的重做例子,顯示你的意思。 – 2011-11-10 22:50:10