2013-07-08 171 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