Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 正在将随机0插入到Rails中的编码数组查询参数中_Ruby On Rails_Ruby_Forms_Params - Fatal编程技术网

Ruby on rails 正在将随机0插入到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 这种

我们有一些复选框——超级普通和通用,其名称为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
这种差异导致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何时出现吗?它完全是随机的——大约每两周/月发生一次。