#item
crée un div avec id = "item"
.box#item
crée un div avec class = "box" et id = "item"
.box#="item "+x
crée un div avec class = "box" et un commentaire '# = "item" + x'
.box#
="item"+x
renvoie "Élément illégal: les classes et les identifiants doivent avoir des valeurs."
Comment puis-je définir l'ID sur une variable?
Il y a deux façons:
La forme longue (définissez l'identifiant comme s'il s'agissait d'un attribut normal):
.box{:id => "item_#{x}"}
produit ceci (x
est ce que jamais x.to_s
correspond à):
<div class="box" id="item_x">
La manière de forme courte:
.box[x]
produit ce qui suit en supposant que x
est une instance de item
:
<div class="box item" id="item_45">
Voir référence HAML pour plus d'informations.
Vous pouvez définir id
et class
dans HAML de la manière suivante
La voie normale
.box.item#item
<div id="item" class="box item"></div>
Si vous avez besoin d'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 l'id à l'aide de 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 devez préfixer quelque chose
.box[@item, :custom]
<div id="custom_item_123" class="box custom_item"></div>
Si vous avez besoin d'une génération de classe et d'ID personnalisée, vous devez ajouter la méthode suivante au modèle.
class CrazyUser < ActiveRecord::Base
def haml_object_ref
"customized_item"
end
end
Et puis vous obtiendrez la classe personnalisée
.box[@item]
<div id="customized_item_123" class="box customized_item"></div>
Référer: