如何从此Rails路由/帮助程序输出原始未转义的html?

nol*_*oli 6 html routes escaping ruby-on-rails helpers

我正在尝试使用以下代码在我的页面上生成链接

%h2= link_to '{{ label }}', product_path('{{ id }}'.html_safe)
Run Code Online (Sandbox Code Playgroud)

这实际上是一个较大的HTML块的一部分,它将作为一个javascript模板,我稍后将解析使用Underscore.js以填充{{ id }}{{ label }}占位符.所以我想让rails输出一些东西给我的HTML

/ products/{{id}}

然而,它一直在逃避空间和小礼物,并给予我

<a href="/products/%7B%7B%20id%20%7D%7D">{{ label }}</a>
Run Code Online (Sandbox Code Playgroud)

所以url_helper正在逃避我的字符串,即使我不想要它.我怎么能强迫它不这样做?

我试过了

%h2= link_to '{{ label }}', product_path('{{ id }}'.html_safe)
%h2= link_to '{{ label }}', product_path(raw '{{ id }}')
%h2= link_to '{{ label }}', raw(product_path('{{ id }}'))
Run Code Online (Sandbox Code Playgroud)

%h2=raw( link_to '{{ label }}', product_path('{{ id }}'.html_safe))
Run Code Online (Sandbox Code Playgroud)

但它们都不起作用

编辑:

使用它的另一种方法是使用rails console,

include ActionController::UrlWriter

ruby-1.9.2-p0 :010 > product_path '{{ id }}'.html_safe
 => "/products/%7B%7B%20id%20%7D%7D" 
Run Code Online (Sandbox Code Playgroud)

任何帮助表示感谢...谢谢

谢谢

dee*_*see 7

怎么样CGI::unescape(product_path('{{ id }}')?(随之require 'cgi'而来的是.)

我相信这只是Ruby 1.9.2,但它似乎是你正在使用的版本.