如何在动态链接中使用HAML?

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.monthTime.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)


Gos*_*ich 7

=在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)