我有一个link_to
帮助器,如下所示:
<%= link_to "example & text", url_for(:controller =>'example', :title=>"example & text") %>
它构建了网址http://localhost:3000/example?title=example&:text
在示例控制器中,它调用index
方法,但params[:title]
返回
值example&:text
。
我想要一个像“example&amp; text”这样的值。所以我试过了
CGI::escape()
和CGI::escapeHTML()
,但没有运气。
答案 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
,因为它被用作参数分隔符。