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?

¿Fue útil?

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">

Vea la referencia HAML para más información.

Otros consejos

Es posible ajustar el id y class en HAML las siguientes maneras

  1. La manera normal

    .box.item#item
    
    <div id="item" class="box item"></div>
    
  2. Si necesita interpolación puede utilizar 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 utilizando la referencia de objeto

    # app/controllers/items_controller.rb 
    @item = Item.find(123)
    
    .box[@item]
    
    <div id="item_123" class="box item"></div>
    
  4. Si necesita algo prefijo

    .box[@item, :custom]
    
    <div id="custom_item_123" class="box custom_item"></div>
    
  5. 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:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top