未定义的方法[]为nil:NilClass在尝试拉取哈希值时 - 检查显示它在那里

时间:2014-12-23 02:14:59

标签: ruby-on-rails ruby ruby-on-rails-3 null

所以,我正在将rails应用程序迁移到更新版本的gem,ruby版本等,最后我遇到了一个问题:

我有一个哈希@values,我从我的控制器中拉出来,每当我尝试这样做时,我得到

undefined method [] for nil:NilClass

但是当我扔进记录器以通过@ values.inspect获取值时,我可以清楚地看到键和值。我确信它一定是非常明显的我遗失的东西,我发现另一个用户遇到了这个问题并解决了它,但我似乎无法使其发挥作用。完整的代码是

if @values[:true_value]
  # do some stuff
end

我得到nil的未定义方法[]:if行上的NilClass错误。

感谢您抽出宝贵时间帮助我

编辑:

我有一个方法:     def GH      {        :true_value =>真      }     端

因此,当在控制器中使用它时,我将@values加载为:

@values = GH

3 个答案:

答案 0 :(得分:0)

你不能拥有以大写字母开头的方法;这些是为常数保留的。

将您的方法重写为:

def gh
  { :true_value => true }
end

在3行(不是你问题中的一行)和

@values = gh

答案 1 :(得分:0)

尝试present ..就像我们通常检查params

一样
 if @values[:true_value].present?
  # do some stuff
end

答案 2 :(得分:0)

方法名称必须小,而不是 GH 它应该是 gh

  1. def gh; {:true_value => true};端

  2. @values = gh

  3. @values [:true_value] =>真

  4. 我希望它能解决你的问题。