Показать 5 записей в строке? - PullRequest
2 голосов
/ 28 октября 2010

В настоящее время это просто длинный список. Как отобразить это с 5 записями в строке вместо 1?

<% @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>

Ответы [ 4 ]

10 голосов
/ 28 октября 2010

Вы можете использовать метод ActiveSupport in_groups_of, чтобы взять массив и разбить его на группы

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

Оригинальный документ из 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]
2 голосов
/ 28 октября 2010
<% @tags.each_with_index do |tag, index| %>
  <%= tag_search(tag) %>
  <%= "<br />" if (index % 5).zero? %>
<% end %>

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

1 голос
/ 28 октября 2010

Возможно, есть лучший способ сделать это, но это сработает:

  <% @tags.each do |tag, i| %>
         <%= '<p>' if i == 1 %>
         <%= tag_search(tag) %>
         <% if i == 5 %>
             <% i = 0 %>
             </p>
         <% end %>
 <% end %>
0 голосов
/ 20 октября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...