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?

Était-ce utile?

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">

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

Autres conseils

Vous pouvez régler la id et class en HAML les façons suivantes

  1. La façon normale

    .box.item#item
    
    <div id="item" class="box item"></div>
    
  2. 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>
    
  3. 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>
    
  4. Si vous avez besoin de quelque chose de préfixe

    .box[@item, :custom]
    
    <div id="custom_item_123" class="box custom_item"></div>
    
  5. 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:

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top