如何在 Rails 中对字符串进行 URL 转义?
如果我在 Rails 的 RHTML 视图中,很容易对某些内容进行 URL 转义:
<a href="/redirect?href=<%=u target %>">Foo</a>
How do I do this in a string?我想做这样的事情:
<% redirect_href = "/redirect?#{url_escape target}&foo=bar&baz=some_other_stuff" -%>
<a href="<%= redirect_href =>">Foo</a>
这一定是微不足道的,对吧?
If I'm in an RHTML view in Rails, it is easy to URL-escape something:
<a href="/redirect?href=<%=u target %>">Foo</a>
How do I do this in a string? I'd like to do something like this:
<% redirect_href = "/redirect?#{url_escape target}&foo=bar&baz=some_other_stuff" -%>
<a href="<%= redirect_href =>">Foo</a>
This must be trivial, right?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
CGI.escape 会这样做:
CGI.escape will do it:
Rails (
activesupport
) 定义了Hash#to_param
(别名为Hash#to_query
):值得注意的是,它对查询键进行排序(用于 HTTP 缓存) 。
Hash#to_param
还接受可选的命名空间参数:http://api.rubyonrails.org/classes/Hash.html#method-i-to_param
Rails (
activesupport
) definesHash#to_param
(aliased toHash#to_query
):It's worth noting that it sorts query keys (for HTTP caching).
Hash#to_param
also accepts optional namespace parameter:http://api.rubyonrails.org/classes/Hash.html#method-i-to_param
ERB::Util。 url_encode
可以在任何地方使用,作为 ruby std lib 的一部分。
ERB::Util.url_encode
can be used from anywhere, part of ruby std lib.
使用
CGI::escape
或ERB::Util.url_encode
,但不要使用URI.encode
。URI.escape
在 Ruby 1.9.2 左右已被弃用:URI.escape 和 CGI.escape 有什么区别?Use either
CGI::escape
orERB::Util.url_encode
but notURI.encode
.URI.escape
has been deprecated circa Ruby 1.9.2: What's the difference between URI.escape and CGI.escape?