Rails,在分配给变量时散列失败,但在中止时显示正确的输出

时间:2016-05-24 05:39:46

标签: ruby-on-rails hash

这应该很简单。我的模型中有一个方法就是这样做:

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}

当我在我的视图中直接使用代码时,代码正常工作。一旦我将它移动到模型并尝试将其分配给变量,我就会得到上述错误。

2 个答案:

答案 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变量必须是模型中的空哈希{}或数组[]。我认为这是你发现错误的唯一方法。