我正在尝试使用看起来像这个
的HAML创建一个链接=link_to("Last updated on<%=@last_data.date_from.month %>",'/member/abc/def?month={Time.now.month}&range=xyz&year={Time.now.year}')
它没有使用Ruby代码,而是将其显示为字符串
上次更新时间&lt;%= @ last_data.date_from.month%&gt;
并且在网址中也没有使用Time.now.month
或Time.now.year
功能。
如何在URL和字符串中传递Ruby代码?
答案 0 :(得分:10)
你应该使用这样的东西:
= 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 :(得分: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}"
答案 2 :(得分:0)
一个简单的语法简单示例:
link_to "Profile #{rubycode}", "profile_path(@profile)/#{ruby_code}", class: "active"