我正在开发一个 Sinatra 应用程序,该应用程序通过 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 似乎在阻碍。