所以我有一个网络应用程序,为此,我将原始params存储在数据库中,以防我需要追踪问题,不幸的是我有一个问题,回到原始表单参数是有用的我们将一些丢失的RSVP排序到一个事件中。
不幸的是,表单有一些嵌套字段,并且解析那些已经证明是很难的。以下是原始表单帖子的示例(数据被混淆):
{"utf8"=>"✓", "authenticity_token"=>"XXXX...=", "focus_group_invite_url_code"=>"XXXXXXX", "event_group_id"=>{"-1"=>""}, "event"=>{"id"=>"-1"}, "spouse"=>{"name"=>""}, "email"=>{"address"=>"XXXX@XXXX.com"}, "phone"=>{"number"=>"5555551212"}, "commit"=>"RSVP", "action"=>"create", "controller"=>"my_controller"}
我尝试过几种方法来分裂成哈希值,但由于其中一些方法的嵌套特性,这证明很难。我也尝试过使用URI.www_form_decode和ActiveSupport :: JSON.decode,但都没有用。我想我必须有一个简单的方法来做到这一点,我很想念。希望有人有一个建议。
答案 0 :(得分:2)
具体是什么给你带来麻烦?
如果你有
data = {"utf8"=>"✓", "authenticity_token"=>"XXXX...=", "focus_group_invite_url_code"=>"XXXXXXX", "event_group_id"=>{"-1"=>""}, "event"=>{"id"=>"-1"}, "spouse"=>{"name"=>""}, "email"=>{"address"=>"XXXX@XXXX.com"}, "phone"=>{"number"=>"5555551212"}, "commit"=>"RSVP", "action"=>"create", "controller"=>"my_controller"}
你可以做像
这样的事情data["authenticity_token"] #=> "XXXX...="
data["event"]["id"] #=> "-1"
data["phone"]["number"].to_i #=> 5555551212
依旧......
答案 1 :(得分:2)
如果tyler的方法不能用于此方法,并且您相信您的导入,并且承认这不是一个好主意... eval将起作用。
1.9.3p327 > s = "{'one' => 1, 'two' => 2}"
=> "{'one' => 1, 'two' => 2}"
1.9.3p327 > h = eval(s)
=> {"one"=>1, "two"=>2}
1.9.3p327 > h.keys
=> ["one", "two"]