sintax rails escape ruby-on-rails ruby haml

ruby-on-rails - rails - haml sintax



Atributo vacĂ­o con Ruby HAML (3)

La respuesta aceptada funciona, pero produce un atributo HTML con valor.

Si desea que el atributo solo se imprima en HTML, sin valor, puede usar la sintaxis de los atributos de estilo HTML de HAML :

%div(itemscope)

Estoy implementando microformatos de Schema en un proyecto de Ruby usando HAML y no puedo encontrar la manera de establecer un atributo vacío en una etiqueta. Probé nulo y falso, pero simplemente no se muestran.

Ejemplo: <div itemscope>

Estoy tratando de establecer un atributo vacío itemscope.

Código agregado del comentario de @StrangeElement:

Mi código:

.agency.premium{:itemscope => true, :itemtype => ''schema.org/ProfessionalService'';}

:itemscope => true parece ser el enfoque recomendado de la documentación de HAML. Obtengo el mismo resultado que obtendría con :itemscope => '''' , un atributo XHTML-valid con un valor vacío (es decir, <div itemscope=""> ).

Probablemente bien, pero prefiero tenerlo vacío como está documentado en el documento de Schema.


Si alguien está interesado en cómo poner más palabras de esa manera, puede usar "foo bar" => true :

%option{ "disabled selected value" => true } Choose an option

resultados es:

<option disabled="" selected="" value="">Choose an option</option>

y funciona como se esperaba


Usando algo como

%div{:itemscope => true}

es la forma correcta de especificar esto en su archivo Haml.

Cómo se representa esto depende de cómo se configura la opción de format de Haml. El valor predeterminado en Haml 3.1 es xhtml , y con eso se representará como itemprop=''itemprop'' , que es xhtml válido. Para renderizar con atributos minimizados (como <div itemscope> ), debe establecer el formato en html4 o html5 . (En Rails 3, el valor predeterminado es html5 , y en Haml 4.0 el valor predeterminado es html5 ).

Cómo configurar las opciones de Haml depende de cómo lo esté usando, consulte la sección de opciones en los documentos .

Por ejemplo, al usar Haml directamente en Ruby, esto:

engine = Haml::Engine.new ''%div{:itemscope => true}'' puts engine.render

produce el xhtml predeterminado con atributos completos:

<div itemscope=''itemscope''></div>

Pero esto:

engine = Haml::Engine.new ''%div{:itemscope => true}'', :format => :html5 puts engine.render

produce el resultado deseado con atributos minimizados:

<div itemscope></div>