sintax rails for escape comment ruby-on-rails haml

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

  1. La forma normal

    .box.item#item

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

  2. Si necesita interpolación, puede usar este formato

    .box{id: "item_#{123}", class: "item_#{123}"}

    <div id="item_123" class="box item_123"></div>

  3. 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>

  4. Si necesitas prefijar algo

    .box[@item, :custom]

    <div id="custom_item_123" class="box custom_item"></div>

  5. 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: