2012-12-27 43 views
8

我試圖創建一個使用HAML它看起來像這樣如何在動態鏈接中使用HAML?

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

這不是借Ruby代碼,它會顯示,作爲一個字符串

最後更新日期:<%的鏈接= @ last_data.date_from.month%>

,並在URL以及它沒有采取功能Time.now.monthTime.now.year

如何在URL和字符串中傳遞Ruby代碼?

回答

9

你應該使用這樣的事:

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

注意,第二個字符串中,有必要改變'"。此外,如果鏈接文本越來越長,你可以使用這樣的事情:

= 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

嘿感謝第一部分是工作,但在URL我仍然得到Time.now .year和Time.now.month –

+0

你是否改變周圍環境?我的意思是' - >「 –

+0

不,它與上面的一樣 –

7

一切後HAML的=是一個Ruby的表達。 Ruby不像HAML那樣插入字符串,它有自己的插值方式。

在Ruby中,當你想讓某個變量的字符串值在另一個字符串中時,你可以這樣做。

"Some string #{Time.now}" 

所以,它應該是:

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

一個簡單的例子,方便的語法:

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