2013-07-08 166 views
2

我试图分析Twitter的推文,我想包括的其中一项是位置。不幸的是,某些值是零,我不断收到错误检查哈希值是否为零

undefined method `[]' for nil:NilClass (NoMethodError) 

我想只运行一个检查,看看是否值零或没有,但我不能得到任何工作。

输入应该是这样的,如果它是零

tweet = {"metadata"=> {"geo"=>nil}} 

,这是否具有价值

tweet = {"metadata"=> {"geo"=>{"coordinates"=>[0,1]}} 

这是我已经试过

if "#{tweet['metadata']['geo']}".nil? == true 
    puts("nil") 
else 
    puts("#{tweet['metadata']['geo']['coordinates']}" 
end 

我我们注意到,它只是检查地理是否为空,因为如果我将if语句更改为false,它会输出“nil”。我不知道如何检查

回答

3

我认为问题可能是你在字符串中插入散列,它将nil转换为一个空字符串,实际上并不是nil。

尝试:

if tweet['metadata']['geo'].nil? 
    puts("nil") 
else 
    puts("#{tweet['metadata']['geo']['coordinates']}") 
end 
+0

那好吧。非常感谢你 – nickg

1

使用present?其检查nilblank为好。用下面的代码检查。

if tweet['metadata']['geo'].present? 
    puts("nil") 
else 
    puts("#{tweet['metadata']['geo']['coordinates']}") 
end