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 代码?

4

3 回答 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}
于 2012-12-27T10:20:04.647 回答
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}"
于 2012-12-27T10:21:39.703 回答
0

一个语法简单的简单示例:

 link_to "Profile #{rubycode}", "profile_path(@profile)/#{ruby_code}", class: "active"
于 2015-12-03T18:07:53.657 回答