2013-03-29 61 views
0

親愛的計算器社區,紅寶石。破解寶石。 - 在'<main> ':未定義的方法`[]' 的零:NilClass(NoMethodError) -

初學者的問題: 爲什麼我得到下面的錯誤?

scraper_sample_2.rb:7:in `<main>': undefined method `[]' for nil:NilClass (NoMethodError) 
>Exit code: 1 

這裏是我的代碼(從Ruby的介紹指南複製):

require "rubygems" 
require "crack" 
require "open-uri" 

URL = "http://www.recovery.gov/pages/GetXmlData.aspx?data=recipientHomeMap" 

Crack::XML.parse(open(URL).read)["totals"]["state"].each do |state| 
    puts ["id", "awarded", "received", "jobs"].map{|f| state[f]}.join(",") 
end 

回答

1

因爲Crack::XML.parse(open(URL).read)["totals"]nil。嘗試將第7行的呼叫拆分爲多行,並分別調試每個呼叫。也許你得到的答案不是你所期望的。

0

鑑於從your source返回的xml格式,如Ivaylo所述,Crack::XML.parse(open(URL).read)["totals"]將返回nil。 XML的格式必須已更改,因爲totals現在在/map/view之內。

要獲得預期的輸出,你的代碼更改爲:

Crack::XML.parse(open(URL).read)["map"]["view"]["totals"]["state"].each do |state| 
    puts ["id", "awarded", "received", "jobs"].map{|f| state[f]}.join(",") 
end 
相關問題