【问题标题】:Taking saved Rails Params from string back to Params将保存的 Rails 参数从字符串返回到参数
【发布时间】:2013-07-26 00:14:55
【问题描述】:

所以我有一个网络应用程序,为此,我将原始参数存储在数据库中,以防我需要追踪问题,不幸的是,我遇到了一个问题,返回原始表单参数会很有用将我们一些缺少的 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 ,但都没有奏效。我认为必须有一种简单的方法可以做到这一点,而我却错过了。希望有人给点建议。

【问题讨论】:

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


【解决方案1】:

具体是什么给你带来了麻烦?

如果你有

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

等等……

【讨论】:

  • 我遇到的问题是将字符串返回到哈希中,但是当我对从 active_record 返回的字符串调用 eval() 时,这对我有用。谢谢。
【解决方案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"]

【讨论】:

  • 我试图避免使用 evals,因为我读过有关使用它的安全问题的信息。在这种有限的用途中而不是在应用程序中可能没问题。谢谢。
猜你喜欢
  • 1970-01-01
  • 2018-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-17
  • 1970-01-01
相关资源
最近更新 更多