使用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 |驱动|
答案 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
我假设您计划将来支持其他密钥?