Comment puis-je faire ids dynamiques Haml?
-
19-09-2019 - |
Question
#item
crée un div id = "item"
.box#item
crée un div class = "box" et id = "item"
.box#="item "+x
crée un div class = "box" et un commentaire '# = "item" + x'
.box#
="item"+x
jette "élément illégales: les classes et les ids doivent avoir des valeurs."
Comment puis-je régler l'identifiant à une variable?
La solution
Il y a deux façons:
Le chemin 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
évalue à):
<div class="box" id="item_x">
La façon courte forme:
.box[x]
produit le x
en supposant suivant est un exemple de item
:
<div class="box item" id="item_45">
Autres conseils
Vous pouvez régler la id
et class
en HAML les façons suivantes
-
La façon normale
.box.item#item
<div id="item" class="box item"></div>
-
Si vous avez besoin à l'interpolation, vous pouvez utiliser ce format
.box{id: "item_#{123}", class: "item_#{123}"}
<div id="item_123" class="box item_123"></div>
-
Ce format génère la classe et id en utilisant la référence d'objet
# app/controllers/items_controller.rb @item = Item.find(123)
.box[@item]
<div id="item_123" class="box item"></div>
-
Si vous avez besoin de quelque chose de préfixe
.box[@item, :custom]
<div id="custom_item_123" class="box custom_item"></div>
-
Si vous avez besoin d'une génération de classe personnalisée et id vous devez ajouter la méthode suivante pour modéliser.
class CrazyUser < ActiveRecord::Base def haml_object_ref "customized_item" end end
Et vous obtiendrez la classe personnalisée
.box[@item]
<div id="customized_item_123" class="box customized_item"></div>
Reportez-vous: