キーがシンボルであるハッシュを反復処理している場合、エラーはどこに問題があるのかを伝えています。日付を解析するには、引数として文字列を渡す必要があります。そのようなオブジェクトを変換していない場合は、エラーが発生しています。
文字列に記号を変換するには、to_s
を使用してみてください:
@data.each do |key, _|
puts Date.parse(key.to_s).strftime '%Y %m'
end
(注)ブロックの中にいる、とあなたはあなたができる、その後、あなたが作成しているk
変数を使用するつもりはない場合それを作成しないでください、それはブロックの外で利用できません。あなたは解析された日付を印刷しています。
ブロック変数value
を使用しない場合は、省略することができます。尖った@muとして、あなたはsymbolize_names: true
を省略することができ、そしてこの方法は、キーが文字列になります
、その後、変換は必要ありません。
require 'date'
require 'json'
request = '{
"data": {
"2017-11-22 00:22:26": "foo" ,
"2017-11-22 00:22:27": "bar"
}
}'
@data = JSON.parse(request)['data']
@data.each do |key, _|
puts Date.parse(key).strftime '%Y %m'
end
request
は、あなたの実際のデータに近似です。
また、 'symbolize_names:true'を実行しないでキーを文字列として残しておくと、文字列として処理されるためです。 '@data = @ data.each {...}'は何も役に立ちません。なぜなら、 'each'がその受信機を返すからです。 –
@muistooshortを指摘してくれてありがとう。 –
私は外出先で日付をフォーマットし、同じオブジェクトに格納したいと思います。それは可能ですか? @SebastianPalma – Wings2fly