2010-08-22 1 views
5

estoy tratando de lograr el siguiente contenido en el código fuente:Rails + Haml: ¿Cómo separar el parámetro de la etiqueta?

<div id="box<%=id%>"></div> 

sin escapar ningún signo de Haml.

%div{ :id => "box_<%=id%>" } 

produce

<div id='box_&lt;%=id%&gt;'></div> 

En este momento la única manera que puedo hacer esto con Haml es utilizar :plain filtro y hardcode HTML sin necesidad de utilizar ningún Ayudantes. ¿Cómo puedo arreglar eso?

Necesito esto porque estoy obligado a seguir esta convención debido a la convención de la sintaxis de terceros: JavaScript Micro-Templating

Referencia:

Haml reference

Respuesta

4

Usted dice que está en la codificación Haml, pero los corchetes indican Erb.

  • Paso 1. Trate de interpolación normal de Ruby:

    %div{ :id => "box_#{id}" } 
    
  • Paso 2. No hay ningún paso 2.

actualización: Cuando escribí esta respuesta, no había utilizado un marco de plantillas JS antes. Mis disculpas por no entender por qué esto era necesario.

+0

Lo sentimos, pero no lo hago código.Codigo en Haml y necesito <%=id%> sin guardar en el código fuente (el enlace Micro-Templating explica la sintaxis). David, ¿cómo puedo arreglar eso? – ep3static

+0

Estoy confundido. ¿Estás generando una plantilla para un lenguaje para analizar usando * otro * lenguaje de plantillas? No creo que vaya por esta ruta. –

+0

Right :) Probablemente el enlace de Micro-Templating lo explicará mejor. – ep3static

2

Básicamente, simplemente no use HAML para esa declaración. Por ejemplo, suponiendo que está haciendo algo como esto en este momento HAML:

%script#template(type="text/html") 
    %div{ :id => "box_<%=id%>" } 

En su lugar, hacer:

%script#template(type="text/html") 
    <div id="box_<%=id%>"></div> 

interpretará la etiqueta script como HAML correctamente, ya que no se está utilizando cualquier %, #, etc. para comenzar con la siguiente línea, interpretará esa línea como texto sin formato y la transmitirá. Parece funcionar bien para mí y tengo un caso muy similar al tuyo. Lo único que hice fue cambiar la jQote (el motor de plantillas que estoy usando para mi Javascript plantillas) etiqueta % a $ con esta declaración Javascript en el head de la página:

%script(type="text/javascript") 
    $(function() { $.jqotetag('$'); }); 

De esta forma el % los letreros no confunden al intérprete de Ruby. Así que el último ejemplo sería:

%script#template(type="text/html") 
    <div id="box_<$=id$>"></div> 

¡Buena suerte!

Cuestiones relacionadas