2010-10-27 3 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 

Я знаю, что это на самом деле простой, но я просто не удается найти правильные условия поиска Google, чтобы получить ответ на мой собственный. Спасибо!

это то, что я в конечном итоге с помощью

<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

1

Существует, вероятно, лучший способ сделать это, но это будет работать:

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

Пожалуйста, не устанавливайте переменные в представлении. –

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

Вы также можете использовать ActiveSupport-х in_group_of.

0

.each должен быть на внутренней петле

+1

привет Майк - какая внутренняя петля? Возможно, вы могли бы предоставить повторно обработанный пример кода, показывающего решение, которое вы имеете в виду. –

Смежные вопросы