ActionView :: Template :: Error(无法将符号转换为整数)

时间:2018-01-29 13:25:33

标签: ruby-on-rails arrays json ruby

使用ruby中的哈希进行一次迭代,但有时在生产中(仅在生产时)会出现此符号错误。

控制器

@d1 = Model.get_driver_details

模型

def get_driver_details
   driver_det = Hash.new
   driver_det[:driver_details] = Table.select('name as d_name, SUM(total) as 
   total_count').group('driver.id')
end

结果

{:driver_details=>[{:d_name=>"Tomy", :total_count=>"25"}]}

迭代

total_count = 0
@d1[:driver_details].each do |driver|
   total_count += driver[:total_count].to_f 
end

所以我收到此错误 ActionView :: Template :: Error(无法将符号转换为整数)在此行 @ d1 [:driver_details] .each do |驱动|

1 个答案:

答案 0 :(得分:1)

此方法不返回driver_det哈希,它只返回哈希中的一个条目,该条目是一个数组。 (因此它需要一个用于索引的整数,因此错误)

def get_driver_details
   driver_det = Hash.new
   driver_det[:driver_details] = Table.select('name as d_name, SUM(total) as 
   total_count').group('driver.id')
end

如果你返回哈希值(在最后一行引用它),你就可以了。

def get_driver_details
   driver_det = Hash.new
   driver_det[:driver_details] = Table.select('name as d_name, SUM(total) as 
   total_count').group('driver.id')
   driver_det
end

我假设您计划将来支持其他密钥?