なんか調べてみたら結構いろんな記事になってた!くそー

何が出来るかと言うと、こんなふうに複数の値を、処理を呼ぶたびに順繰りに返してくれる。

# Cycle CSS classes for rows, and text colors for values within each row
@items = x = [{first: 'Robert', middle: 'Daniel', last: 'James'},
             {first: 'Emily', middle: 'Shannon', maiden: 'Pike', last: 'Hicks'},
            {first: 'June', middle: 'Dae', last: 'Jones'}]
<% @items.each do |item| %>
  <tr class="<%= cycle("odd", "even", name: "row_class") -%>">
    <td>
      <% item.values.each do |value| %>
        <%# Create a named cycle "colors" %>
        <span style="color:<%= cycle("red", "green", "blue", name: "colors") -%>">
          <%= value %>
        </span>
      <% end %>
      <% reset_cycle("colors") %>
    </td>
  </tr>
<% end %>

https://github.com/rails/rails/blob/05baed07caaa54a77d144779641951135e6b2650/actionview/lib/action_view/helpers/text_helper.rb#L354

current_cycleで現在の値を取れるし、reset_cycleで順繰りをリセットすることもできるぽい。

eachで回しながら i を精査して偶数なら〜とかやらなくてすむ!