2012-12-27 14 views
8

Próbuję utworzyć łącze za pomocą haml który wygląda jak tenJak używać HAML w łączu dynamicznym?

=link_to("Last updated on<%[email protected]_data.date_from.month %>",'/member/abc/def?month={Time.now.month}&range=xyz&year={Time.now.year}') 

Nie bierze kodu Ruby i jest wyświetlanie że jako ciąg

Ostatnia aktualizacja <% = @ last_data.date_from.month%>

i w adresie URL, jak również nie bierze funkcję Time.now.month lub Time.now.year.

Jak przekazać kod Ruby w adresie URL i ciągu?

Odpowiedz

9

Należy prawdopodobnie używać coś takiego:

= link_to("Last updated on #{@last_data.date_from.month}", "/member/abc/def?month=#{Time.now.month}&range=xyz&year=#{Time.now.year}") 

pamiętać, że w drugim ciągiem, jest to konieczne, aby zmienić ' do ". Także, jeśli tekst linku jest coraz długo, można użyć coś takiego:

= link_to("/member/abc/def?month=#{Time.now.month}&range=xyz&year=#{Time.now.year}") do 
    Last updated on #{@last_data.date_from.month} 
+1

Hey dzięki Pierwsza część działa, ale w adresie URL nadal jestem coraz Time.now .rok i Time.now.month –

+0

Czy zmieniłeś otoczenie? Mam na myśli "->" –

+0

Nie, to jest takie samo jak powyżej –

7

Wszystko po = w haml jest wyrażeniem Ruby. Ruby nie interpoluje łańcuchów tak, jak robi to HAML, ma własny sposób takiej interpolacji.

W języku Ruby, gdy chcesz mieć wartość łańcucha jakiejś zmiennej wewnątrz innego ciągu, możesz to zrobić.

"Some string #{Time.now}" 

Tak, powinno być:

= link_to "Last updated on #{@last_data.date_from.month}", "/member/abc/def?month=#{Time.now.month}&range=xyz&year=#{Time.now.year}" 
0

Prosty przykład z łatwym składnię:

link_to "Profile #{rubycode}", "profile_path(@profile)/#{ruby_code}", class: "active"