Ruby on rails 正在将随机0插入到Rails中的编码数组查询参数中
我们有一些复选框——超级普通和通用,其名称为rails创建的Ruby on rails 正在将随机0插入到Rails中的编码数组查询参数中,ruby-on-rails,ruby,forms,params,Ruby On Rails,Ruby,Forms,Params,我们有一些复选框——超级普通和通用,其名称为rails创建的whatever_value[],用于传递搜索表单所选复选框的集合。99.99%的时间有效。但是,在随机情况下,我们会遇到一些失败,因为我们在以下位置收到请求: https://our.url/?whatever_value%5B0%5D=21 注意%5B和%5D之间的0(url编码的开始和结束括号,[])。在其他99.99%的情况下,它显示为: https://our.url/?whatever_value%5B%5D=21 这种
whatever_value[]
,用于传递搜索表单所选复选框的集合。99.99%的时间有效。但是,在随机情况下,我们会遇到一些失败,因为我们在以下位置收到请求:
https://our.url/?whatever_value%5B0%5D=21
注意%5B
和%5D
之间的0
(url编码的开始和结束括号,[
]
)。在其他99.99%的情况下,它显示为:
https://our.url/?whatever_value%5B%5D=21
这种差异导致rails将该值解释为散列({“whatever_value”=>{“0”=>“21”}}
而不是数组{“whatever_value”=>[21]}
)
我在过去工作过的地方也注意到了这一点,我有一种感觉,可能有一个浏览器奇怪地显示复选框或发送选中的参数,但我一直无法弄清楚到底发生了什么 我发现,当您尝试使用facebook“共享”按钮时,可能会出现此错误。因为我有这样的问题,我还不知道如何解决它。“可共享”gem会生成这样错误的url。这很奇怪。一个简单的钩子可以确保
params[:whatever_value]
的值是一个数组,但我知道您不必这样做。此问题是否与浏览器有关?(chrome/firefox/opera/IE/others?)是的——我可能会编写一些代码检查一下,但我对根本原因很好奇。用户代理字符串是:“Mozilla/5.0(Windows NT 6.3;WOW64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/41.0.2272.101 Safari/537.36”
真棒的发现!非常感兴趣,如果这是表单生成器或请求生成中的错误,您知道0何时出现吗?它完全是随机的——大约每两周/月发生一次。