Ruby on rails ActionView::Template::Error(无法将符号转换为整数)
在ruby中使用哈希进行一次迭代,但在production中有时仅在production中获得此符号错误 控制器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
@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