2012-06-27 3 views
4

Хорошо, поэтому мой заголовок может ввести в заблуждение. То, что я хочу сделать, - это пропустить коллекцию моделей, а для первых двух - визуализировать шаблон, для следующих четырех визуализировать другой шаблон, а следующие два визуализировать тот же шаблон, что и для первых, и так далее.Ruby каждый, различное действие в зависимости от индекса, с рисунком?

Как это:

<% ads.each do |ad| %> 
    <% # if it's 1-2, 7-8, 13-14 and so on render as big' %> 
     <%= render 'front/home/big_ad', ad: ad %> 
    <% # if it's 3-6, 9-12, 15-18 and so on render as small' %> 
     <%= render 'front/home/small_ad', ad: ad %> 
    <% end %> 
    <% end %> 

Что бы чистым способом для достижения этой цели?

ответ

12

Если ваши группы будут еще долго, то вы можете использовать команду in_groups_of и чередуются между ними, но с этими характеристиками, самый простой способ заключается в следующем:

<% ads.each_with_index do |ad, index| %> 
    <% if (index % 6 < 2) %> 
    <%= render 'front/home/big_ad', ad: ad %> 
    <% else %> 
    <%= render 'front/home/small_ad', ad: ad %> 
    <% end %> 
<% end %> 
+1

Как насчет [ 'перечислимых # each_with_index'] (http://ruby-doc.org/core-1.9.3/Enumerable.html#method-i-each_with_index)? –

+0

Да, еще лучше. Мой немного более «традиционный». Сейчас я меняю его. – Matzi

+0

Эй, спасибо, реклама может быть любой длины, я попробую. – Yeggeps

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

  • Нет связанных вопросов^_^