Rails每个循环逻辑

时间:2013-05-16 20:56:40

标签: ruby-on-rails foreach

我的每个循环都有问题。打印programdetail.name和programdetail.bodypart的行不会打印该值。你也知道如何让这个循环更有效率?我想打印前两个类“奇数”,另外2个非类。等等。

<% @counter = 0 %>
<% @program.programdetails.each do |programdetail| %>
    <% @counter = @counter + 1 %>
    <% @counter = @counter % 3 %>
    <% if (@counter == 0)
      @counter -= 1
    end %>
    <%= '<h3 class="odd"><span class="moduleLabel"> #{programdetail.name}</span><span class="moduleDescription">#{programdetail.bodypart}</span></h3>' if @counter != 0 %>
    <%= '<h3><span class="moduleLabel">#{programdetail.name}</span><span class="moduleDescription">#{programdetail.bodypart}</span></h3>' if @counter != 0 %>

<% end %>

1 个答案:

答案 0 :(得分:3)

cycle帮助可能有用,如果你想要奇数/偶数组合,或者在一个集合上:

<% @program.programdetails.each do |programdetail| %>

  <h3 class="<%= cycle("odd", "odd", "", "") %>
    <span class="moduleLabel"><%= programdetail.name %></span>
    <span class="moduleDescription"><%= programdetail.bodypart %></span>
  </h3>

<% end %>

修复您的代码:

<% @counter = 0 %>
<% @program.programdetails.each do |programdetail| %>
  <% @counter = (@counter % 4) + 1 %>
  <h3 class="<%= ((1..2).cover?(@counter))? 'odd': '' %>">    
    <span class="moduleLabel"><%= programdetail.name %></span>
    <span class="moduleDescription"><%= programdetail.bodypart %></span>
  </h3>
<% end %>