2010-02-07 9 views
64
#item 

schafft ein div mit id = "item"Wie mache ich dynamische IDs in Haml?

.box#item 

schafft ein div mit class = "Box" und id = "item"

.box#="item "+x 

ein div mit Klasse erstellt =“ box“und ein Kommentar '# = "item" + x'

.box# 
    ="item"+x 

wirft "Illegale Element: Klassen und Ids Werte haben müssen".

Wie bekomme ich die ID auf eine Variable?

Antwort

118

Es gibt zwei Möglichkeiten:

Die lange Form Art und Weise (definieren Sie die ID, als ob es ein reguläres Attribut waren):

.box{:id => "item_#{x}"} 

dies erzeugt (x ist, was immer x.to_s ausgewertet):

<div class="box" id="item_x"> 

Die Kurzform Art und Weise:

.box[x] 

erzeugt die folgende Annahme x ist eine Instanz item:

<div class="box item" id="item_45"> 

die HAML reference für weitere Informationen.

+2

Ich musste die Leerzeichen entfernen, damit es funktioniert: .box {: id => "item _ # {x}"} – jethroo

+0

Wie verketten Sie eine Zeichenfolge und eine stringkonvertierte Variable in der Shortcut-Methode? Ich habe '.box [" item "+ s]' und Varianten ohne Erfolg versucht. Ist diese Abkürzung mit eckigen Klammern nur kompatibel nur mit Variablen? – ahnbizcad

+1

@gwho die Verknüpfungsmethode erfordert, dass x eine Instanz des Elements ist. Verwenden Sie die Langformatzeichenketteninterpolationsform, um zu erzielen, nach was Sie suchen. .box {: id => "Element # {s}"} – EmFi

Verwandte Themen