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

10
我正试图使用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代码解析,而是将其显示为字符串。

最后更新于<%=@last_data.date_from.month %>

在URL中,它也没有将函数Time.now.monthTime.now.year解析。

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

3个回答

11

你应该使用类似于这样的内容:

= 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。 - Arihant Godha
你改变了环境吗?我的意思是 ' -> "。 - Jiří Pospíšil
好的,你应该 :). 如果你有一个用单引号包裹的字符串,在其中就不会插入任何 Ruby 表达式。 - Jiří Pospíšil
URL应该是这样的吗?'/member/abc/def?month=#{Time.now.month}&range=xyz&year=#{Time.now.year}' - Arihant Godha

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"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接