我通过Ajax "[1,3,44,2,0]"
调用发送一个数组(PATCH
),它以:
Parameters: {"ids"=>"[1,3,44,2,0]"}
要进行污点检查,我使用以下行 - 其中匹配锚定字符串的开头和结尾,并确保至少有一个数字,或者数字以逗号分隔:
raise "unexpected ids #{params[:ids]}" unless params[:ids].match(/\A\[(\d+,)*\d+\]\z/)
要从中创建一个实际的整数数组,我使用以下方法(删除括号,在逗号上拆分,将每个字符串元素转换为整数):
irb> "[1,3,44,2,0]"[1...-1].split(',').map {|e| e.to_i}
=> [1, 3, 44, 2, 0]
是否有更好(更简单,更便宜,更快)的方法?
答案 0 :(得分:1)
尝试
JSON.parse(params[:ids])
但我认为你应该检查你的Ajax电话。必须可以不将数组作为字符串传递。