How to wrap every N elements in parent div in ERB (Rails)?

erb, html, ruby, ruby-on-rails

Solution

How about this:

<% @members.each_slice(3) do |slice| %>
  <div class="row">
    <% slice.each do |member| %>
      <div class="member">
      ...your markup here
      </div>
    <% end %>
  </div>
<% end %>

Problem

My members index page is simply a list of members, but I'd like every 3 members to be wrapped in a containing div (that will act like a row). So rather than: ``` <div class="member"></div> <div class="member"></div> <div class="member"></div> <div class="member"></div> <div class="member"></div> ``` I need the markup to be: ``` <div class="row"> <div class="member"></div> <div class="member"></div> <div class="member"></div> </div> <div class="row"> <div class="member"></div> <div class="member"></div> </div> ``` I do have a solution, but I'm not happy with it. I have actually seen a better way to do it in ERB before, but can't find it again. My current code: ``` <div class="row"> <% @members.each do |member| %> <div class="member"><%=member.name%></div> <%= cycle("", "", "</div><div class=\"row\">".html_safe) %> <% end %> </div> ```

Original source