2012-05-21 9 views
6

Necesito utilizar algunos manillares bloqueadores dentro del atributo de un elemento. ¿Cómo puedo obtenerAyudantes de bloqueo de manubrios atornillados en HAML

.some.class{:class => "{{if property}} otherClass {{/if}}"} 

para analizar correctamente? Aquí está la salida compilada como es:

<div class='class otherClass property}} some {{/if}} {{if'></div> 

He intentado escapar de todos los personajes no-palabra, tratando comillas simples, y ajustar la separación, pero nada parece solucionarlo. Espero encontrar una solución más elegante que simplemente usar la palabra clave: plain.

+3

Lo siento por responder a mi propia pregunta (o aparentemente no puedo durante otras 6 horas), pero en realidad encontrado una solución que funciona aquí . Parece que hay un problema con la forma en que haml combina las clases de los atributos con los de la "cadena de puntos". Cambiarlo a esto parece funcionar bien. % div {: class => "some class {{if property}} otherClass {{/ if}}"} – user1408632

+1

Si publica su solución como respuesta, la votaré como una respuesta para usted. ¡Ese truco funcionó por completo! Gracias. – poweratom

Respuesta

1

He descubierto que debe agregar un carácter antes del {{}} para que Haml lo acepte. Por ejemplo:

%div.some.class{:class => "a{{foo}}"} 

No es idea, pero suites mis propósitos.

0

En realidad, el truco no funciona para cualquier expresión de manubrio que sea moderadamente compleja.

Al final resolví esto usando literales de cadena en haml. Entonces, en el caso de ejemplo que se muestra en la pregunta. El siguiente haml es necesario, recuerde cerrar su etiqueta, que es la última línea.

\ <div class='class {{if property}} otherClass {{/if}} some '> 
-# Normal haml goes here and must not start at the same indent as the above literal 
\ </div> 
0

Mueva todas las clases al atributo de clase en lugar de utilizar tanto la notación de puntos abreviada de clase como un atributo de clase.

.col-md-12.card{ class: "{{toLowerCase level_name}}-master-card" } 

convierte

%div{ class: "col-md-12 card {{toLowerCase level_name}}-master-card" } 

HAML 4.0.7

Cuestiones relacionadas