2011-12-27 8 views
0

Ruby on Railsでこの文字列にこのハッシュをシリアル化するにはどうすればよいですか?Ruby on Railsハッシュオブジェクトをシリアライズ

ありがとうございます!

{"options"=>{"first_name"=>"Jeremy", "favorite_beer"=>"Bells Hopslam"}} => 
"{'options[favorite_beer]': 'Bells Hopslam', 'options[first_name]': 'Jeremy'}" 
+0

は、なぜあなたはこれをしたいですか?すべての細部を提供することなく、何か怪しげなことをしようとしているようですが、あなたがしようとしていることを達成するための良い方法があります。 –

+0

Mercury.Snippet.load( {snippet_1:{name: 'example'、options:{'options [favorite_beer]': "Bells Hopslam"、 "options [first_name]": "Jeremy"}} });そしてオプションのシリアル化オブジェクトを持っています利用可能な –

答えて

1

私はまだ完全にあなたがここで正しいことをやっていることを保証しないんだけど、ちょうどあなたの質問に答えるために:

def stringify(hash) 
    items = hash.map do |key, inner| 
    inner.map { |k, v| "'#{key}[#{k}]': '#{v}'" } 
    end 

    "{#{items.join(', ')}}" 
end 


p stringify({"options"=>{"first_name"=>"Jeremy", "favorite_beer"=>"Bells Hopslam"}}) 
#=> "{'options[first_name]': 'Jeremy', 'options[favorite_beer]': 'Bells Hopslam'}" 
+0

これは完璧です!ありがとう! –

0

をまた、YAMLやJSONでそれをシリアル化することができます。

{"options"=>{"first_name"=>"Jeremy", "favorite_beer"=>"Bells Hopslam"}}.to_yaml => 

"--- \noptions: \n first_name: Jeremy\n favorite_beer: Bells Hopslam\n" 

または

{"options"=>{"first_name"=>"Jeremy", "favorite_beer"=>"Bells Hopslam"}}.to_json => 

"{\"options\":{\"first_name\":\"Jeremy\",\"favorite_beer\":\"Bells Hopslam\"}}" 
+0

ああ、申し訳ありませんが、特にそれが水星のためであるとは見えませんでした。はい、カスタムメソッドを使用する必要があります。 – hurshagrawal