paramsに格納されているハッシュデータをto_yamlで変換するときのメモ

paramsの内容が以下のものであるとき、

{:id => "1", "answer"=>{"1"=>"いちご", "2"=>"メロン", "3"=>"ブルーハワイ"}}

params["answer"]は{"1"=>"いちご", "2"=>"メロン", "3"=>"ブルーハワイ"}のハッシュを表しているはずなので、

str = params["answer"].to_yaml

以下の文字列として、できるはずなのだけどうまくいかなかった。

--- 
"1": "いちご"
"2": "メロン"
"3": "ブルーハワイ"

理由は、paramsはHashを拡張したHashWithIndifferentAccessというクラスだから。なので、いちどHashに格納しなおしてto_yamlを使ってみた。

tmpHash = Hash.new
params["answer"].each do |key, value|
  tmpHash.store(key,value)
end
str = tmpHash.to_yaml

これでうまくいった。