Динамически разделить массив на несколько столбцов - PullRequest
1 голос
/ 29 декабря 2010

Я работаю в Ruby on Rails 2.3.8 и у меня есть коллекция категорий. Итак, я хотел бы перечислить их в три столбца на строку, в группы по 10, и иметь столько строк, сколько необходимо. Количество категорий может меняться, поэтому функциональность должна быть динамичной.

Есть ли "рельсовый путь" для достижения этой цели? или какой лучший способ сделать это?

Ответы [ 2 ]

3 голосов
/ 29 декабря 2010

Взгляните на следующий эпизод с Railscasts:

http://railscasts.com/episodes/28-in-groups-of

Метод "in_groups_of" должен быть именно тем, что вам требуется:

>> [1,2,3,4,5,6,7].in_groups_of(2, false)
=> [[1, 2], [3, 4], [5, 6], [7]]

Документацию для in_groups_of можно найти по адресу:

http://railsbrain.com/api/rails-2.3.2/doc/index.html?a=M001423&name=in_groups_of

1 голос
/ 29 декабря 2010

Не знаю, если это «путь рельсов», но наверняка это «мой путь»;)

# in controller
@categories = Category.all

# in view
<table>
  <% @categories.each_with_index do |cat, index| %>
    <%= "<tr>" if index % 30 == 0 %>
    <%= "<td>" if index % 10 == 0 %>
    <%= cat.name %>
    <%= "</td>" if (index + 1) % 10 == 0 || index + 1 == @categories.size %>
    <%= "</tr>" if (index + 1) % 30 == 0 || index + 1 == @categories.size %>
  <% end %>
</table>

Если вы переключитесь на Rails 3, вы должны добавить rawперед размещением любого тега HTML внутри <%= %>.

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