Rails каждый цикл вставить тег каждые 6 элементов? - PullRequest
32 голосов
/ 17 мая 2010

У меня есть X объектов изображения, которые мне нужно просмотреть в представлении, и я хочу создать новый div каждые 6 объектов или около того (для галереи).

Я посмотрел на цикл, но, похоже, он меняет все остальные записи. Кто-нибудь знает способ вставки кода в представление каждые 6 раз?

Возможно, я мог бы сделать это с помощью вложенных циклов, но я немного озадачен этим.

Ответы [ 2 ]

102 голосов
/ 17 мая 2010

Вы можете использовать Enumerable#each_slice в сочетании с #each, чтобы избежать встроенных вычислений. each_slice разбивает массив на куски n, в данном случае 6.

<% @images.each_slice(6) do |slice| -%>
  <div class="gallery">
    <% slice.each do |image| -%>
      <%= image_tag(image.url, :alt => image.alt) %>
    <% end -%>
  </div>
<% end -%>
13 голосов
/ 17 мая 2010

Это рубиновый вопрос. Вы можете объединить это с тем, что пытается сделать ваш взгляд.

@list.each_with_index do |item, idx|
  if((idx + 1) % 6 == 0)
    # Poop out the div
  end
  # Do whatever needs to be done on each iteration here.
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...