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

时间:2012-12-27 10:17:22

标签: ruby-on-rails ruby ruby-on-rails-3 haml

我正在尝试使用看起来像这个

的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.monthTime.now.year功能。

如何在URL和字符串中传递Ruby代码?

3 个答案:

答案 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"