2010-02-07 5 views
64
#item 

crée un div id = "item"Comment créer des identifiants dynamiques dans Haml?

.box#item 

crée un div class = "box" et id = "item"

.box#="item "+x 

crée un div class = » boîte » et un commentaire '# = "item" + x'

.box# 
    ="item"+x 

jette "élément illégaux: les classes et les ids doivent avoir des valeurs".

Comment définir l'ID sur une variable?

Répondre

118

Il y a deux façons:

La façon de forme longue (définir l'identifiant comme si elle était un attribut ordinaire):

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

produit ce (x est ce que jamais x.to_s est évaluée à):

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

La façon de forme courte:

.box[x] 

produit ce qui suit en supposant x est une instance de item:

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

Voir la HAML reference pour plus d'informations.

+2

J'ai dû supprimer les espaces pour le faire fonctionner: .box {: id => "item _ # {x}"} – jethroo

+0

comment concaténer une chaîne et une variable convertie par une chaîne dans la méthode de raccourci? J'ai essayé '.box [" item "+ s]' et les variantes sans succès. Est-ce un raccourci utilisant des crochets uniquement compatibles avec les variables? – ahnbizcad

+1

@gwho la méthode de raccourci requiert que x soit une instance d'élément. Utilisez le formulaire d'interpolation de chaîne de formulaire long pour obtenir ce que vous recherchez. .box {: id => "article # {s}"} – EmFi

Questions connexes