¿Cómo hago identificadores de dinámicas en Haml?
-
19-09-2019 - |
Pregunta
#item
crea un div con id = "elemento"
.box#item
crea un div con la clase = "caja" y id = "elemento"
.box#="item "+x
crea un div con la clase = "caja" y un comentario '# = "elemento" + x'
.box#
="item"+x
lanza "elementos ilegales: las clases y las identificaciones deben tener valores."
¿Cómo puedo configurar la ID a una variable?
Solución
Hay dos maneras:
La forma de forma larga (definir el id como si fuera un atributo regular):
.box{:id => "item_#{x}"}
produce esto (x
es lo que cada vez se evalúa como x.to_s
):
<div class="box" id="item_x">
El camino corto formulario:
.box[x]
produce la x
siguiente suponiendo es una instancia de item
:
<div class="box item" id="item_45">
Otros consejos
Es posible ajustar el id
y class
en HAML las siguientes maneras
-
La manera normal
.box.item#item
<div id="item" class="box item"></div>
-
Si necesita interpolación puede utilizar este formato
.box{id: "item_#{123}", class: "item_#{123}"}
<div id="item_123" class="box item_123"></div>
-
Este formato genera la clase y el ID utilizando la referencia de objeto
# app/controllers/items_controller.rb @item = Item.find(123)
.box[@item]
<div id="item_123" class="box item"></div>
-
Si necesita algo prefijo
.box[@item, :custom]
<div id="custom_item_123" class="box custom_item"></div>
-
Si necesita una generación de clase personalizada y la identificación es necesario agregar el siguiente método para modelar.
class CrazyUser < ActiveRecord::Base def haml_object_ref "customized_item" end end
Y por lo que recibirá la clase personalizada
.box[@item]
<div id="customized_item_123" class="box customized_item"></div>
Consulte: