我正在研究一個Sinatra應用程序,該應用程序通過XML文件提取日期列表,然後創建所有日期的散列。Ruby解析XML:不將字符串隱式轉換爲整數
我遇到了一個奇怪的問題,當我拉ID並將其分配給一個變量時發生。
我得到的錯誤是: 字符串的隱式轉換成整數和它正在對event_date_id = event_date["date_id"]
線拋出。我的代碼中有幾乎相同的方法,它工作得很好。當我puts event_date['date_id']
它給了我正確的數字date_id。
以防萬一它有幫助,event_date ['date_id']的類是REXMLUtiliyNodeString,與其他方法中的id字段相同。如果我嘗試event_date['date_id'].to_i
它在這一點上休息。
def get_dates(event_id)
url = "some_url_to_some_xml"
puts '==================='
puts "Pulling in #{url}"
puts '==================='
date_xml = Crack::XML.parse(open(url))
dates = {}
date_xml['document']['date'].each do | event_date |
event_date_id = event_date['date_id']
single_date = {
'date_id' => event_date_id,
'date_start' => event_date['datestart'],
'date_end' => event_date['dateend'],
'date_live' => event_date['live'],
'time_start' => event_date['timestart'],
'time_end' => event_date['timestart'],
'date_available' => event_date['date_available']
}
dates.merge!(event_date_id => single_date)
end
return dates
end
這裏是XML格式:
<document>
<date>
<date_id>881908</date_id>
<live>y</live>
<datestart>2017-08-14</datestart>
<dateend>2017-08-15</dateend>
<timestart>13:00</timestart>
<timeend>0:00</timeend>
<date_available>10000</date_available>
</date>
<document>
我有一種感覺,這是很簡單的東西,但我令人頭大我的腦子想弄明白。如果有人能夠對此有所瞭解,我一定會很感激。
編輯1:當我在irb中運行代碼時,它確實無誤地工作。不知何故,似乎Sinatra,Rack或Shotgun正在阻礙其發展。
我知道這不太有用,但它在我的機器上工作正常(Mac OS 10.8,ruby 2.0.0) – kristenmills
感謝您的關注。我想這會讓我的環境出問題! – chantron