When iterating through a collection in a rails view, I typically use a block to do so right in my view.
If I need different id’s in the DOM for each element, it’s quickly achievable with the
with_index method which provides the index of each item as it iterates.
<!-- index.html.erb --> <ul> <% @products.each.with_index do |product, index| %> <li id="product<%= index %>"><%= product.name %></li> <% end %> </ul>
with_index works when you’re iterating through a collection within your view, you but how would you create different id’s in the DOM if you’re rendering your collection within a partial?
According to Local variables in Rails documentation, when you’re rendering a collection with a Rails partial, you can use a
counter as you iterate over that collection.
That same example rendering the collection with a rails partial would look like.
<!-- index.html.erb --> <ul> <% render partial: "product", collection: @products %> </ul> <!-- _product.html.erb --> <li id="product<%= product_counter %>"><%= product.name %></li>