2012-03-08 17 views
45

¿es posible agregar contenido html dentro de un link_to helper en HAML?poner etiquetas haml dentro de link_to helper

He intentado esto, pero todo lo que consigo es un error de sintaxis:

= link_to "Other page", "path/to/page.html" 
    %span.icon Arrow 

salida esperada:

<a href="path/to/page.html">Other Page<span class="icon">Arrow</span></a> 

Respuesta

104

Usted se utilice el bloque

= link_to "path/to/page.html" do 
    Other page 
    %span.icon Arrow 
+1

¿Sabes cómo puedo eliminar el espacio adicional que está creando ese código al final del enlace? Es notable cuando sobrevivo cuando todo el enlace queda subrayado. – ayjay

+0

Gracias, esto es muy útil. Se olvidó de explicar que es importante tener en cuenta que al usar el bloque 'do' en' link_to', el único parámetro es la ruta, y el texto del enlace o cualquier otro contenido va dentro del bloque. – unmultimedio

+0

Si usa la [gema de font-awesome-sass] (https://github.com/FortAwesome/font-awesome-sass#a-ruby-on-rails), también puede usar p. Ej. '= icon" arrow-right "' en lugar de '% span.icon Arrow' que invoca el método de ayuda. – metakermit

11

Si alguien sigue utilizando Rails 2.x en un proyecto, parece que la respuesta aceptada devuelve el bloque, duplicando así el enlace en el marcado . cambio muy simple: utilizar - en lugar de =

- link_to "path/to/page.html" do 
    Other page 
    %span.icon Arrow 
5

La forma más sencilla de hacerlo es mediante el uso de html_safe o funciones primas

= link_to 'Other Page<span class="icon"></span>'.html_safe, "path/to/page.html" 

o utilizando la función prima (recomendado)

= link_to raw('Other Page<span class="icon"></span>'), "path/to/page.html" 

Tan simple como puede ser !!

No utilice el método html_safe a menos que esté seguro de que su cadena no es nula. En su lugar, use el método raw(), que no generará una excepción en nil.

Cuestiones relacionadas