2012-03-08 10 views
45

è possibile aggiungere contenuto html all'interno di un link_to helper in HAML?metti tag haml all'interno di link_to helper

Ho provato a farlo, ma tutto quello che ottiene è un errore di sintassi:

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

risultato atteso:

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

risposta

104

si dovrebbe usare blocco

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

Sai come posso liberarmi dello spazio extra che viene creato da quel codice alla fine del collegamento? È notevole quando lo alzo su di esso quando l'intero collegamento viene sottolineato. – ayjay

+0

Grazie, questo è molto utile. Ti sei perso per spiegare che è importante notare che quando si usa il blocco 'do' in' link_to', l'unico parametro è il percorso, e il testo del collegamento o qualsiasi altro contenuto va all'interno del blocco. – unmultimedio

+0

Se si utilizza il [font-awesome-sass gem] (https://github.com/FortAwesome/font-awesome-sass#a-ruby-on-rails), è possibile utilizzare anche es. '= icona" freccia-destra "' invece di '% span.icon Arrow' che richiama il metodo helper. – metakermit

11

Se qualcuno è ancora utilizzando Rails 2.x su un progetto, sembra che la risposta accettata restituisca il blocco, duplicando così il collegamento nel markup . Cambiamento molto semplice: utilizzare - anziché =

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

Il modo più semplice per farlo è usare html_safe o funzioni prime

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

o utilizzando funzione greggio (negativa)

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

Semplice come si può ottenere !!

Non utilizzare il metodo html_safe se non si è sicuri che la stringa non sia nulla. Usa invece il metodo raw(), che non solleverà un'eccezione su zero.