ruby on rails - rails - ¿Cómo puedo hacer identificadores dinámicos en Haml?
rails slim for (2)
#item
crea un div con id = "item"
.box#item
crea un div con class = "box" y id = "item"
.box#="item "+x
crea un div con class = "box" y un comentario ''# = "item" + x''
.box#
="item"+x
arroja "elemento ilegal: las clases y los identificadores deben tener valores".
¿Cómo puedo configurar el id para una variable?
Hay dos maneras:
La forma larga (define la identificación como si fuera un atributo regular):
.box{:id => "item_#{x}"}
produce esto ( x
es lo que x.to_s
evalúa):
<div class="box" id="item_x">
La forma corta:
.box[x]
produce lo siguiente suponiendo que x
es una instancia de item
:
<div class="box item" id="item_45">
Ver la referencia HAML para más información.
Puede establecer el id
y la class
en HAML de las siguientes maneras
La forma normal
.box.item#item
<div id="item" class="box item"></div>
Si necesita interpolación, puede usar 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 con la referencia del objeto
# app/controllers/items_controller.rb @item = Item.find(123)
.box[@item]
<div id="item_123" class="box item"></div>
Si necesitas prefijar algo
.box[@item, :custom]
<div id="custom_item_123" class="box custom_item"></div>
Si necesita una clase personalizada y generación de ID, debe agregar el siguiente método al modelo.
class CrazyUser < ActiveRecord::Base def haml_object_ref "customized_item" end end
Y luego obtendrás la clase personalizada
.box[@item]
<div id="customized_item_123" class="box customized_item"></div>
Referir: