循环通过轨道中的哈希数组

时间:2016-10-04 09:59:12

标签: ruby-on-rails arrays

我发送给控制器的哈希数组如下:

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"}]

我该如何解决这个问题?

1 个答案:

答案 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')})