Ari*_*dha 9 ruby haml ruby-on-rails ruby-on-rails-3
我正在尝试使用看起来像这样的HAML创建一个链接
=link_to("Last updated on<%=@last_data.date_from.month %>",'/member/abc/def?month={Time.now.month}&range=xyz&year={Time.now.year}')
Run Code Online (Sandbox Code Playgroud)
它没有采用Ruby代码,而是将其显示为字符串
上次更新于<%= @ last_data.date_from.month%>
并在URL中也没有采取功能Time.now.month
或Time.now.year
.
如何在URL和字符串中传递Ruby代码?
Jiř*_*šil 10
你应该使用这样的东西:
= link_to("Last updated on #{@last_data.date_from.month}", "/member/abc/def?month=#{Time.now.month}&range=xyz&year=#{Time.now.year}")
Run Code Online (Sandbox Code Playgroud)
请注意,在第二个字符串中,需要更改'
为"
.此外,如果链接文本变长,您可以使用以下内容:
= link_to("/member/abc/def?month=#{Time.now.month}&range=xyz&year=#{Time.now.year}") do
Last updated on #{@last_data.date_from.month}
Run Code Online (Sandbox Code Playgroud)
=
在HAML 之后的所有内容都是Ruby表达式.Ruby不像HAML那样插入字符串,它有自己的插值方式.
在Ruby中,当你想在另一个字符串中包含某个变量的字符串值时,你可以这样做.
"Some string #{Time.now}"
Run Code Online (Sandbox Code Playgroud)
所以,它应该是:
= link_to "Last updated on #{@last_data.date_from.month}", "/member/abc/def?month=#{Time.now.month}&range=xyz&year=#{Time.now.year}"
Run Code Online (Sandbox Code Playgroud)