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 endY luego obtendrás la clase personalizada
.box[@item]<div id="customized_item_123" class="box customized_item"></div>
Referir: