2012-03-26 6 views
2

Ich versuche, eine Tabellenzeile, um Stil mit beiden cycle und ein Helfer, wie gezeigt:Assign mehrere CSS-Klassen auf ein Tabellenelement in Rails

<tr class= <%= cycle("list-line-odd #{row_class(item)}", "list-line-even #{row_class(item)}")%> > 

Allerdings, wenn ich dies tun, ist die resultierende HTML ist :

<tr class = "list-line-odd" lowest-price> 

mit der Rückkehr aus der Hilfsmethode nicht in Anführungszeichen eingeschlossen und daher nicht erkannt.

Hier ist der Helfer Ich verwende:

def row_class(item) 
    if item.highest_price > 0 and item.lowest_price > 0 and item.highest_price != item.lowest_price 
     if item.current_price >= item.highest_price 
     "highest-price" 
     elsif item.current_price <= item.lowest_price 
     "lowest-price" 
     end 
    end 
    end 

ich offensichtlich etwas fehlen muss, aber ich kann einfach nicht herausfinden, wie sowohl das Ergebnis des Zyklus und die Hilfsmethode Rückkehr in derselben wickeln Satz von Anführungszeichen. Jede Hilfe würde sehr geschätzt werden!

Antwort

2

Es gibt die Anführungszeichen, die Sie um die Klassendefinition im HTML haben möchten, und die Anführungszeichen, die die innerhalb des Ruby-Codes aufgerufenen Strings begrenzen. Der Rubin innerhalb der <%= ruft zwei Funktionen auf, die Strings (cycle, und Ihre Methode row_class) ausgeben, die durch ein Leerzeichen getrennt sein sollen. Ich denke, entweder von ihnen werden das tun, was Sie wollen:

<tr class="<%= cycle('list-line-odd', 'list-line-even') + ' ' + row_class(item) %>" > 

oder vielleicht ein wenig hübschen

<tr class="<%= "#{cycle('list-line-odd', 'list-line-even')} #{row_class(item)}" %>" > 

oder sogar% Q || Format Begrenzer Verwirrung zu vermeiden ...

<tr class="<%= %Q|#{cycle('list-line-odd', 'list-line-even')} #{row_class(item)}| %>" > 

was so etwas wie

<tr class="list-line-odd lowest-price" > 

EDIT: Meine ursprüngliche Post war falsch. Sie müssen den Abstand zwischen der cycle- und row_class-Methode verketten.

+0

Das hat den Trick! Ich ging mit Ihrer zweiten Option, weil das am saubersten aussah. Danke für die Hilfe! –