2010-10-08 2 views
17

gewünschte Ausgabe:Rails 3 - eine Tabelle Gebäude, Möchten Sie Alternate Farben in jeder Zeile

<ul> 
<li class="odd">stuff</li> 
<li class="even">stuff</li> 
<li class="odd">stuff</li> 
<li class="even">stuff</li> 
<li class="odd">stuff</li> 
<li class="even">stuff</li> 
<li class="odd">stuff</li> 
<li class="even">stuff</li> 
</ul> 

CSS:

.odd {color:blue} 
.even{color:red;} 

In Schienen 3 ist es eine saubere Möglichkeit, dies etc ohne Zähler zu tun?

dank

+1

Wenn Sie es mit Rails tun wollen, hören Sie Raphomet. – John

Antwort

37

Der Rails Weg, dies zu tun, ist cycle zu verwenden.

<li class="<%= cycle('even', 'odd') -%>">stuff</li> 

Documentation

+3

Es funktionierte für mich. Was ist der Spruch? '-%>' –

+0

@BSeven '-%>' unterdrückt die Zeilenumbruch, die Sie in diesem Fall definitiv nicht möchten. Ich glaube nicht, dass 'cycle' jemals eine neue Zeile anhängen würde, also nehme ich an, dass es nur die Gewohnheit des Autors ist, sie immer zu benutzen (zur Sicherheit), obwohl Raphomet das vielleicht klären kann. –

4

ich eine Antwort here gefunden, die für mich gearbeitet, hier ein wenig konkretisiert. Getestet für die Arbeit mit Rails 3.2.8.

Die something.html.erb Datei:

<table> 
    <tr> 
    <th>foo</th> 
    <th>bar</th> 
    </tr> 
    <% @something.each do |s| -%> 
    <tr class="<%= cycle('oddrow', 'evenrow') -%>"> 
     <td> ... </td> 
     <td> ... </td> 
    </tr> 
    <% end %> 
</table> 

Die something.css.scss Datei:

table tr.oddrow { 
    background-color: #111111; 
} 

table tr.evenrow { 
    background-color: #333333; 
} 
1

Rails' TextHelper Methode: cycle.

<li class="<%= cycle('odd','even') -%>">stuff</li> 

Hinweis: ‚ungerade‘ kommen sollte, bevor ‚sogar‘ (nicht wie oben aufgeführt) oder Ihre Designer vielleicht nicht glücklich sein, dass die Ausgang Hintergrund-Farbe nicht gehen, wie sie geplant.