2010-03-13 31 views

Respuesta

5

Lamentablemente, no puede poner dos elementos haml en la misma línea.

Se puede lograr algo similar mediante el uso de elementos HTML en línea:

%h1 <a href='/'>Lorem ipsum</a> 

¿Por qué no te gusta este formato?

%h1 
    %a{:href => '/'} Professio. 

Otra opción es escribir el método especial 'helper' (que genera un enlace html). Por ejemplo, el link_to en Rails:

%h1= link_to 'Professio', root_url 
+0

Me gustaría en la misma línea porque quiero que el HTML de salida esté en la misma línea. Haré muchas líneas, gracias. –

+1

Comprueba la respuesta de Garvin a continuación, llegó tarde pero parece ser el correcto para esta pregunta. – fotanus

2

Si usted está buscando para preservar el código HTML en la misma línea que podría intentar algo como esto:

irb> print Haml::Engine.new("%h1<\n %a{:href => '/'} Profession.").render() 
<h1><b href='/'>Profession.</a></h1> 

encontrar aquí: HAML whitespace removal

[Editar: Sé que eso dice b href arriba ...]

+0

Publiqué mi respuesta después de darme cuenta de que su respuesta era esencialmente la misma. No me di cuenta de que era lo mismo al principio porque la muestra del código está algo ofuscada. –

16

Última respuesta, pero yo mismo estaba abordando el mismo problema y sabía que HAML tenía una manera de hacer esto como parte del lenguaje. Vea el White Space Removal section of the HAML reference.

Usted puede hacerlo de esta manera:

%h1< 
    %a{ :href => '/' } Professio. 

O esta manera:

%h1 
    %a{ :href => '/' }> Professio. 
4

Haml no puede hacer esto. Slim puede:

h1: a(href='/') Professio. 

es lo mismo que:

h1 
    a(href="/) Professio 

Se puede escribir como árbol más profundo como sea necesario:

ul.nav 
    li.active: a(href="/home"): strong Home 
    li:  a(href="/contact"): span Contact 

Jade también tiene una sintaxis similar y compatible con esta función, pero ha sido diseñado para el entorno Node.js.

+0

Gracias por señalar Slim, ¡parece una buena alternativa a HAML! –

Cuestiones relacionadas