ruby-on-rails – 如何在Rails中将空格的params替换为”而不是”
发布时间:2020-12-16 23:13:38 所属栏目:百科 来源:网络整理
导读:如果我有这个参数添加到URL params = {name:’John Key’} 并使用方法to_param: params.to_param = "name=John+Key" 关键是”使用的服务没有正确读
如果我有这个参数添加到URL
params = {name:’John Key’} 并使用方法to_param: params.to_param => "name=John+Key" 关键是”使用的服务没有正确读取’并且需要”而是name = John Key:When to encode space to plus (+) or %20? 有没有办法在没有使用gsub的情况下返回params? 解决方法
我建议只是坚持使用gsub,也许用评论来解释这种行为的必要性.
虽然您可以通过使用URI.escape来解决问题,但据推测它已被弃用,因为它不完全符合RFC规范. See here对它进行了很好的记录. Hash#to_param是Hash#to_query的别名,它调用Object#to_query.证明这个问题的最简单的例子是: '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之间差异的原因. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |