我发送给控制器的哈希数组如下:
comparisons = [{
"startdate": "01/01/2016",
"enddate": "01/02/2016"
}, {
"startdate": "01/03/2016",
"enddate": "01/04/2016"
}, {
"startdate": "01/05/2016",
"enddate": "01/06/2016"
}, {
"startdate": "01/05/2016",
"enddate": "01/06/2016"
}];
$.ajax({
url: '/get_data',
method: 'GET',
dataType: 'JSON',
data: {
startdate: '01/01/2016',
enddate: '01/01/2016',
comparisons: comparisons
},
success: function (data) {
console.log(data);
}
});
然后在控制器中我想循环进行这些比较:
@comparisons = []
if !params[:comparisons].blank?
params[:comparisons].each do |c|
@comparisons.push({:startdate => c[:startdate], :enddate => c[:enddate], :data => get_data(c[:startdate], c[:enddate], 'week')})
end
end
我收到错误:> no implicit conversion of Symbol into Integer
调试时我发现我的循环中c
的结构与我发送的内容相同......
c: ["0", {"startdate"=>"01/01/2016", "enddate"=>"01/01/2016"}]
我该如何解决这个问题?
答案 0 :(得分:1)
最简单的修复方法是更改您引用c
数据的方式...您可以看到c
是一个数组(解释错误,它期待数组元素是通过整数访问)您可以看到c
数组的第二个(最后一个)元素包含您想要的数据。
@comparisons.push({:startdate => c.last[:startdate],
:enddate => c.last[:enddate],
:data => get_data(c.last[:startdate], c.last[:enddate], 'week')})