Rails each loop insert tag every 6 items?

18,290

Solution 1

You can use Enumerable#each_slice in conjunction with #each to avoid inline calculations. each_slice breaks the array into chunks of n, in this case 6.

<% @images.each_slice(6) do |slice| -%>
  <div class="gallery">
    <% slice.each do |image| -%>
      <%= image_tag(image.url, :alt => image.alt) %>
    <% end -%>
  </div>
<% end -%>

Solution 2

This is a Ruby question. You can meld this into whatever your view is trying to do.

@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
Share:
18,290
Dustin M.
Author by

Dustin M.

Updated on August 01, 2022

Comments

  • Dustin M.
    Dustin M. almost 2 years

    I have X number of image objects that I need to loop through in a view and want to create a new div every 6 objects or so (for a gallery).

    I have looked at cycle but it seems to change every other record. Does anyone know of a way to insert code into a view every 6 times?

    I could probably do it with nested loops but I am kinda stumped on this one.