Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 来自activerecord搜索的rails 4数据迭代_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 来自activerecord搜索的rails 4数据迭代

Ruby on rails 来自activerecord搜索的rails 4数据迭代,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我试图迭代从活动记录搜索返回的哈希 数据返回{[k,v]=>v[k,v]=>v等},我需要将该数据放在表的3个单独的列中 到目前为止,我对助手的了解是 data = {} connector = 0 us_cords = 0 eu_cords = 0 molex_connector = 0 chart_data_two.each do |key, value| data[key[0]] ||= Hash.new

我试图迭代从活动记录搜索返回的哈希

数据返回{[k,v]=>v[k,v]=>v等},我需要将该数据放在表的3个单独的列中

到目前为止,我对助手的了解是

data = {}
      connector = 0
      us_cords = 0
      eu_cords = 0
      molex_connector = 0

      chart_data_two.each do |key, value|
        data[key[0]] ||= Hash.new
        data[key[0]][key[1]] = value
      end
    return data
这给了我上面的k,v对中的k,然后是上面的“v”=>v的散列

因此,我很难对数据哈希进行迭代,并将其放入每列的视图表中

该视图有@table_data_two=图表数量每月数据(@chart_data_two),然后是@table_data_two。每个do|k,v|用于生成每行/每列

最终,最好每月只合并一个单元格,4个单元格用于模型,然后是数量

这里有一种方法可以实现这一点:

data = Hash.new { |h, k| h[k] = {} }

chart_data_two.each do |key, value|
  model_quantity = { key[0] => value }
  data[key[1]].merge!(model_quantity)
end
如果希望按月份排序,可以将键更改为整数并对其排序:

data = Hash.new { |h, k| h[k] = {} }

chart_data_two.each do |key, value|
  model_quantity = { key[0] => value }
  data[key[1].to_i].merge!(model_quantity)
end

sorted_data = data.sort.to_h

它不是完美的,所以我会再看一遍,看看有什么可以改进,但它至少会让你开始,假设我正确理解了你的问题

最后做的有点不同:

data = {}

#initialize hash keys in the order you want them to end up in
(1..12).each do |month|
  data[month] = {"Connector" => 0, "US Cords" => 0, "EU Cords" => 0}
end

chart_data_two.each do |key, value|
#key[1] is month. we're referencing the keys we initialized above
#key[2] is model. we're adding a new key to the nested hash we initialized above
  #logger.info "#{key[0]}, #{key[1]}, #{value}"
  data[key[1].to_i][key[0]] = value
  #logger.info "%%%%%%%% inside iterator #{data}"
end
#logger.info "$$$$$ passing #{data} into chart"
return data
结束


有人帮我弄明白了,但我想把它贴在这里。

你能贴一些样本数据吗?在
[k,v]=>v
中,v==v吗?它在图片中;但这是第一个以图表形式出现的数据:
{[“连接器”,“1”]=>4481,[“连接器”,“10”]=>722,[“连接器”,“2”]=>132,[“连接器”,“3”=>1467,[“连接器”,“4”=>3438,[“连接器”,“5”=>1627,[“连接器”,“6”=>508,[“欧盟跳线”,“1”=>218,[“欧盟跳线”,“2”=>100,[“美国跳线”,“1”=>292,[“美国跳线”,“2”=>256]
这是以{Model,Month}=>Sum(Quantity)的形式从活动记录搜索中获取的。有4种模型类型,最多12个月,然后每个模型类型每月对应的总和(数量)。此外,我需要使用图表\u data\u two将数据分为3列:月、模型、总和(数量)。最终,一个月只合并一个单元格,4个单元格用于模型,然后计算数量可能会更好;但是每次只做一件事。我一定是做错了什么。当我创建表时,您的代码会移动首先显示的内容,但仍然只给我两列数据。在注释中生成表很困难,但基本上月份是填充月份,但模型列中有哈希,数量为空。我需要将表格中的所有内容从原始数据
{[“连接器”,“1”]=>4481,[“连接器”,“10”]=>722,[“连接器”,“2”]=>132,[“连接器”,“3”=>1467,[“连接器”,“4”]=>3438,[“连接器”,“5”=>1627,[“连接器”,“6”=>508,[“欧盟跳线”,“1”=>218,[“欧盟跳线”,“2”=>100,[“美国跳线”,“1”=>292[“US Cords”,“2”]=>256}
这是提供给助手的原始数据。我需要将“#”部分作为列数据,将“US Cords”等剥离到列中,然后将=>”###“将部分转换为表上的一列。我开始认为我必须接受您给我的内容,然后将该哈希值转换为数组。当然,很抱歉我花了这么长时间;上周末我出城了<代码>车型月份数量