2012-03-08 15 views
45

jest to możliwe, aby dodać zawartość html wewnątrz pomocnika link_to w HAML?umieścić znaczniki haml wewnątrz help_link_to

próbowałem tego, ale ja dostać jest błąd składni:

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

oczekiwany wynik:

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

Odpowiedz

104

Należy użyć bloku

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

Czy wiesz, w jaki sposób mogę pozbyć się dodatkowego miejsca, które jest tworzone przez ten kod na końcu łącza? Jest to zauważalne, gdy najeżdżam na niego, gdy cały link zostanie podkreślony. – ayjay

+0

Dziękuję, to jest bardzo przydatne. Tęskniłeś, aby wyjaśnić, że ważne jest, aby pamiętać, że używając bloku 'do' w' link_to', jedynym parametrem jest ścieżka, a tekst linku lub dowolna inna treść przechodzi w tym bloku. – unmultimedio

+0

Jeśli używasz [font-awesome-sass gem] (https://github.com/FortAwesome/font-awesome-sass#a-ruby-on-rails), możesz również użyć np. '= ikona" Strzałka w prawo "' zamiast '% span.icon Strzałka', która wywołuje metodę pomocnika. – metakermit

11

Jeśli ktoś nadal korzysta Railsy 2.x na projekcie, wygląda na to, że zaakceptowana odpowiedź zwraca blok, a więc powielenie łącza w znacznikach . Bardzo prosta zmiana: użyj - zamiast =

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

najprostszy sposób to zrobić jest użycie html_safe lub surowego funkcje

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

lub za pomocą funkcji surowego (zalecane)

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

Proste, jak to możliwe!

Nie używaj metody html_safe, chyba że masz pewność, że Twój ciąg znaków nie jest zerowy. Zamiast tego użyj metody raw(), która nie spowoduje wyjątku na zero.