Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using partials, how do I render `striped` table rows in a DRY way?

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?

like image 237
marcamillion Avatar asked Sep 07 '25 22:09

marcamillion


2 Answers

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).

like image 84
pdu Avatar answered Sep 09 '25 13:09

pdu


Won't it be better just to use :nth-child() css selector? http://www.w3schools.com/cssref/sel_nth-child.asp

like image 32
Phobos98 Avatar answered Sep 09 '25 13:09

Phobos98