作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
如果我有这个参数用于添加到 URL
params = { name: 'John Key' }
并使用方法to_param
:
params.to_param
=> "name=John+Key"
重点是 '+' 没有被所使用的服务正确读取,需要 '%20' 而不是 name=John%20Key
: When to encode space to plus (+) or %20?
有没有办法在不使用 gsub
的情况下返回带有“%20”的参数?
最佳答案
我会建议只坚持使用 gsub
,也许用注释来解释这种行为的必要性。
虽然您可以通过使用 URI.escape
解决问题,但据说它已被弃用,因为它不完全符合 RFC 规范。 See here写一篇关于它的精彩文章。
Hash#to_param
是Hash#to_query
的别名,调用Object#to_query
。演示此 +
与 %20
问题的最简单示例是:
'John Key'.to_query(:name) # => "name=John+Key"
Object#to_query
的实现是:
def to_query(key)
"#{CGI.escape(key.to_param)}=#{CGI.escape(to_param.to_s)}"
end
因此,我们发现:
CGI.escape("John Key") # => "John+Key"
因此,这就是为什么我提到了 CGI.escape
和 URI.escape
之间的区别。
关于ruby-on-rails - 如何在 Rails 中使用空格作为 '%20' 而不是 '+' 获取 url 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38353767/
我是一名优秀的程序员,十分优秀!