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

Ruby on rails ActionView::Template::Error(无法将符号转换为整数),ruby-on-rails,arrays,json,ruby,Ruby On Rails,Arrays,Json,Ruby,在ruby中使用哈希进行一次迭代,但在production中有时仅在production中获得此符号错误 控制器 @d1 = Model.get_driver_details 模型 结果 {:driver_details=>[{:d_name=>"Tomy", :total_count=>"25"}]} 迭代 total_count = 0 @d1[:driver_details].each do |driver| total_count += driver[:tot

在ruby中使用哈希进行一次迭代,但在production中有时仅在production中获得此符号错误

控制器

@d1 = Model.get_driver_details
模型

结果

{: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|u details]。每个do | driver|

这个方法并没有返回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

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

是否有可能在@d1实例变量中放入数组而不是哈希?这个变量在你的代码中是如何设置的?当我检查这个类时,@d1显示hash,而这个@d1[:driver_details]显示了ArrayIt的正确行为,但是你已经隐式地写了:在产品中@d1有时会变成一个数组。所以我的下一个问题是:@d1变量是如何在代码中设置的?@MarekLipka我已经用我的问题更新了代码,查询结果是什么?
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