如何在 Rails 中对字符串进行 URL 转义?

发布于 2024-11-08 13:39:21 字数 400 浏览 0 评论 0原文

如果我在 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}&amp;foo=bar&amp;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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

暖伴 2024-11-15 13:39:21

CGI.escape 会这样做:

<% redirect_href = "/redirect?#{CGI.escape target}&foo=bar&baz=some_other_stuff" -%>
<a href="<%= redirect_href =>">Foo</a>

CGI.escape will do it:

<% redirect_href = "/redirect?#{CGI.escape target}&foo=bar&baz=some_other_stuff" -%>
<a href="<%= redirect_href =>">Foo</a>
時窥 2024-11-15 13:39:21

Rails (activesupport) 定义了 Hash#to_param(别名为 Hash#to_query):

 {foo: 'asd asdf', bar: '"<#$dfs'}.to_param
 # => "bar=%22%3C%23%24dfs&foo=asd+asdf"

值得注意的是,它对查询键进行排序(用于 HTTP 缓存) 。

Hash#to_param 还接受可选的命名空间参数:

{name: 'David', nationality: 'Danish'}.to_param('user')
# => "user[name]=David&user[nationality]=Danish"

http://api.rubyonrails.org/classes/Hash.html#method-i-to_param

Rails (activesupport) defines Hash#to_param (aliased to Hash#to_query):

 {foo: 'asd asdf', bar: '"<#$dfs'}.to_param
 # => "bar=%22%3C%23%24dfs&foo=asd+asdf"

It's worth noting that it sorts query keys (for HTTP caching).

Hash#to_param also accepts optional namespace parameter:

{name: 'David', nationality: 'Danish'}.to_param('user')
# => "user[name]=David&user[nationality]=Danish"

http://api.rubyonrails.org/classes/Hash.html#method-i-to_param

浮光之海 2024-11-15 13:39:21

ERB::Util。 url_encode

可以在任何地方使用,作为 ruby​​ std lib 的一部分。

ERB::Util.url_encode

can be used from anywhere, part of ruby std lib.

故事未完 2024-11-15 13:39:21

使用 CGI::escapeERB::Util.url_encode,但不要使用 URI.encode

URI.escape 在 Ruby 1.9.2 左右已被弃用:URI.escape 和 CGI​​.escape 有什么区别?

Use either CGI::escape or ERB::Util.url_encode but not URI.encode.

URI.escape has been deprecated circa Ruby 1.9.2: What's the difference between URI.escape and CGI.escape?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文