Rails:如何在URL形成中转义&符号

时间:2011-01-25 10:14:47

标签: ruby-on-rails url

我有一个link_to帮助器,如下所示:

<%= link_to "example & text", url_for(:controller =>'example', :title=>"example & text") %>

它构建了网址http://localhost:3000/example?title=example&amp:text

在示例控制器中,它调用index方法,但params[:title]返回 值example&amp:text

我想要一个像“example&amp; text”这样的值。所以我试过了 CGI::escape()CGI::escapeHTML(),但没有运气。

2 个答案:

答案 0 :(得分:12)

需要使用CGI.escape转义网址:

link_to "example & text", :controller => "example", :title => CGI.escape("example & text")

这应该产生类似的东西:

<a href="/example?title=example+%26+text">example & text</a>

然后,无论你想在哪里使用它,你都可以再次使用它以使其恢复正常:

CGI.unescape params[:title] # => "example & text"

答案 1 :(得分:2)

为此,有一个很好的rails方法叫raw

您可以这样使用:

<%= link_to raw("example & text"), url_for(:controller =>'example', :title=>raw("example & text")) %>

&不应该使用URL,因为它被用作参数分隔符。