Comment créer des identifiants dynamics dans Haml?

#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 

jette “Elément illégal: les classes et les identifiants doivent avoir des valeurs.”

Comment puis-je définir l’id à une variable?

Il y a deux manières:

La forme longue (définissez l’identifiant comme s’il s’agissait d’un atsortingbut normal):

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

produit ceci ( x est ce que chaque x.to_s évalue):

 

La forme abrégée:

 .box[x] 

produit le suivant en supposant que x est une instance d’ item :

 

Voir la référence HAML pour plus d’informations.

Vous pouvez définir l’ id et la class dans HAML comme suit:

  1. La manière normale

     .box.item#item 
     
  2. Si vous avez besoin d’interpolation, vous pouvez utiliser ce format

     .box{id: "item_#{123}", class: "item_#{123}"} 
     
  3. Ce format génère la classe et l’identifiant en utilisant la référence d’object

     # app/controllers/items_controller.rb @item = Item.find(123) 
     .box[@item] 
     
  4. Si vous avez besoin de préfixer quelque chose

     .box[@item, :custom] 
     
  5. Si vous avez besoin d’une génération de classe et d’ID personnalisée, vous devez append la méthode suivante à la modélisation.

     class CrazyUser < ActiveRecord::Base def haml_object_ref "customized_item" end end 

    Et puis vous obtiendrez la classe personnalisée

     .box[@item] 
     

Référer: