Using partials, how do I render `striped` table rows in a DRY way?
partial-views, ruby-on-rails, ruby-on-rails-3
Solution
Have you tried using `cycle` and `current_cycle` ?
http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-cycle
<tr class="<%= cycle('odd', 'even') -%>">
<!-- etc -->
</tr>
This alternates your classes with `odd` and `even` and IMHO should also work when render a collection. If you need the value of the actual cycle multiple times, you get it with `current_cycle` (because calling `cycle` multiple times would mess up your cycles, unless you want that).
Problem
So I have some view code that looks like this: ``` <div class="box-content"> <table class="table table-properties"> <tbody> <%= render :partial => 'property', collection: @search.listings, as: :listing %> </tbody> </table> </div> ``` In that `_property.html.erb`, I have this: ``` <tr> <td class="span2"> <%= link_to listing_path(listing), :class => "thumbnail thumb2" do %> <%= image_tag "room_1.jpg", :alt => "Lucas" %> <% end %> </td> <td> <h2><%= link_to listing.headline, listing_path(listing) %></h2> <h5><%= listing.listing_type.name if listing.listing_type "#{listing.neighborhood.name.capitalize}" %></h5> <h5>Maintenance <%= number_to_currency(listing.maintenance) %></h5> </td> <td class="span1"> <h2 class="price"><%= number_to_currency(listing.price)%></h2> <h5><%= "#{listing.num_bedrooms} bed, #{listing.num_bathrooms} bath" %></h5> </td> </tr> ``` Basically, I want to generate that above code exactly, for each row, the only difference is I want every 2nd row (i.e. all even numbered rows) to have the `class=striped`..i.e. `<tr class=striped>`. Thoughts on how to do this in a DRY way?