如果它是零,哈希不会捕获

时间:2013-12-13 19:07:53

标签: ruby erb

我正在尝试在哈希上运行.each。但是,有时它是零。当我检查它是否为零时......它说它不是。然后我得到以下异常:

undefined method `[]' for nil:NilClass

这是我的代码。知道为什么它不起作用吗?

if @abc[:def] != nil
  @abc[:def].each do |ghi|     <---- Fails Here
    .
    .
    .
  end
end

任何想法/建议都会很棒。

更新

@abc不是零。如果我做abc的PUTS,我收到以下内容:

puts "abc:  #{@abc}"
abc:  {:val1=>"123", :val2=>"234"}
puts "abc[:def]:  #{@abc[:def]}"
abc[:def]:  []

@abc是使用YAML创建的。这是如何实例化的。

@abc = YAML.load(File.open(pathToYamlFile/yamlFile.yml))

3 个答案:

答案 0 :(得分:2)

尝试

if @abc && @abc[:def]
  @abc[:def].each do |ghi|
    .
    .
    .
  end
end

如果您仍然收到错误,那么它可能发生在块中,错误消息只是找到块开始的行。

答案 1 :(得分:0)

if @abc.nil? && @abc[:def].nil?
    # do the other stuffs
end

答案 2 :(得分:0)

而不是if @abc[:def] != nil

使用

if @abc.key?(:def) && !@abc[:def].nil?