将保存的Rails Params从字符串恢复为Params

时间:2013-07-25 21:41:52

标签: ruby-on-rails ruby string hash params

所以我有一个网络应用程序,为此,我将原始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,但都没有用。我想我必须有一个简单的方法来做到这一点,我很想念。希望有人有一个建议。

2 个答案:

答案 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"]