这应该很简单。我的模型中有一个方法就是这样做:
my_hash.max_by{ |k,v| v}[0]
我试图获取散列中最大值的键(通过将其转换为数组)。如果我执行以下操作,则会获得预期结果:
abort my_hash.max_by{ |k,v| v}[0] # Honda (for example)
当我这样做时,我得到一个未定义的方法`[]'为零:NilClass。
brand = my_hash.max_by{ |k,v| v}[0]
我错过了什么?任何想法或猜测都表示赞赏!
修改 my_hash {"本田" = GT; 4,"丰田" => 2,"福特" => 1}
当我在我的视图中直接使用代码时,代码正常工作。一旦我将它移动到模型并尝试将其分配给变量,我就会得到上述错误。
答案 0 :(得分:0)
您可以分享您在my_hash中使用的密钥,值对吗?
我试过这个,它对我有用:
irb(main):008:0> my_hash = {"CA"=>2, "MI"=>1, "NY"=>1}
=> {"CA"=>2, "MI"=>1, "NY"=>1}
irb(main):009:0> brand = my_hash.max_by{ |k,v| v}[0]
=> "CA"
答案 1 :(得分:0)
my_hash
变量必须是模型中的空哈希{}
或数组[]
。我认为这是你发现错误的唯一方法。