Frage

#item

erstellt ein div mit id = "item"

.box#item

erstellt ein div mit class = "Box" und id = "item"

.box#="item "+x

erstellt ein div mit class = "Box" und einem Kommentar '# = "item" + x'

.box#
  ="item"+x

wirft "Illegale Element: Klassen und IDs müssen Werte haben."

Wie kann ich fertig die ID in eine Variable?

War es hilfreich?

Lösung

Es gibt zwei Möglichkeiten:

Die lange Form Art und Weise (definieren Sie die ID, als ob es ein reguläres Attribut war):

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

Dies erzeugt (x ist, was immer x.to_s ausgewertet):

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

Die Kurzform Art und Weise:

.box[x]

erzeugt die folgende Annahme x eine Instanz von item ist:

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

Sehen Sie die HAML Referenz für weitere Informationen.

Andere Tipps

Sie können die id und class in HAML legen Sie die folgenden Möglichkeiten

  1. Der normale Weg

    .box.item#item
    
    <div id="item" class="box item"></div>
    
  2. Wenn Sie die Interpolation können Sie dieses Format verwenden

    .box{id: "item_#{123}", class: "item_#{123}"}
    
    <div id="item_123" class="box item_123"></div>
    
  3. Dieses Format erzeugt die Klasse und id die Objektreferenz mit

    # app/controllers/items_controller.rb 
    @item = Item.find(123)
    
    .box[@item]
    
    <div id="item_123" class="box item"></div>
    
  4. Wenn Sie etwas Präfix

    .box[@item, :custom]
    
    <div id="custom_item_123" class="box custom_item"></div>
    
  5. Wenn Sie eine benutzerdefinierte Klasse und id Generation benötigen müssen Sie die folgende Methode hinzufügen zu modellieren.

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

    Und dann werden Sie die benutzerdefinierte Klasse bekommen

    .box[@item]
    
    <div id="customized_item_123" class="box customized_item"></div>
    

Siehe:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top