2010-02-07 14 views
64
#item 

crea un div con id = "voce"Come si creano ID dinamici in Haml?

.box#item 

crea un div con class = "box" e id = "voce"

.box#="item "+x 

crea un div con class =" box" e un commento '# = "voce" + x'

.box# 
    ="item"+x 

getta "illegale elemento: le classi e gli iD devono avere valori".

Come si imposta l'ID su una variabile?

risposta

118

Ci sono due modi:

Il modo formato lungo (Definizione id come se fosse un attributo standard):

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

produce questo (x è ciò mai x.to_s viene valutata a):

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

Il modo più breve modulo:

.box[x] 

produce il seguente assumendo x è un'istanza di item:

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

Vedere la HAML reference per maggiori informazioni.

+2

ho dovuto rimuovere lo spazio per farlo funzionare: .box {: id => "elemento _ # {x}"} – jethroo

+0

come si concatena una stringa e una variabile convertita in stringa nel metodo di scelta rapida? Ho provato '.box [" item "+ s]' e varianti senza successo. Questo modo di scorciatoia utilizzando parentesi quadre è compatibile solo con le variabili? – ahnbizcad

+1

@gwho il metodo di scelta rapida richiede che x sia un'istanza dell'elemento. Usa il modulo di interpolazione della stringa di forma lunga per ottenere quello che stai cercando. .box {: id => "articolo # {s}"} – EmFi

Problemi correlati