gpt4 book ai didi

ruby-on-rails - 如何在 Rails 中使用空格作为 '%20' 而不是 '+' 获取 url 的参数

转载 作者:数据小太阳 更新时间:2023-10-29 06:49:38 24 4
gpt4 key购买 nike

如果我有这个参数用于添加到 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_paramHash#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.escapeURI.escape 之间的区别。

关于ruby-on-rails - 如何在 Rails 中使用空格作为 '%20' 而不是 '+' 获取 url 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38353767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com