私は、XML ファイルを介して日付のリストを取得し、すべての日付のハッシュを作成する Sinatra アプリケーションに取り組んでいます。
ID を取得して変数に代入しているときに、奇妙な問題が発生しています。
私が得ているエラーは次のとおりです。
文字列から整数への暗黙的な変換はなく、行にスローされていevent_date_id = event_date["date_id"]
ます。私のコードにはほぼ同じメソッドがあり、うまく機能しています。puts event_date['date_id']
私が正しい数値のdate_idを教えてくれるとき。
念のため、event_date['date_id'] のクラスは、他のメソッドの id フィールドと同じ REXMLUtiliyNodeString です。私がしようとする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 でコードを実行すると、実際にエラーなく動作します。どこかで、どういうわけか、シナトラ、ラック、またはショットガンが邪魔をしているようです。