Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将保存的Rails参数从字符串返回到参数_Ruby On Rails_Ruby_String_Hash_Params - Fatal编程技术网

Ruby on rails 将保存的Rails参数从字符串返回到参数

Ruby on rails 将保存的Rails参数从字符串返回到参数,ruby-on-rails,ruby,string,hash,params,Ruby On Rails,Ruby,String,Hash,Params,因此,我有一个web应用程序,为此,我在数据库中存储原始参数,以防我需要跟踪某个问题。不幸的是,我遇到了一个问题,返回原始表单参数将一些丢失的RSVP排序到事件中是有用的 不幸的是,表单中有几个嵌套字段,而对这些字段进行反解析被证明是很困难的。下面是一个原始表单post的示例(数据模糊): 我尝试过使用一些方法来分解散列,但由于其中一些方法的嵌套性质,这很难实现。我还尝试使用URI.www_form_decode和ActiveSupport::JSON.decode,但两者都不起作用。我在想,一

因此,我有一个web应用程序,为此,我在数据库中存储原始参数,以防我需要跟踪某个问题。不幸的是,我遇到了一个问题,返回原始表单参数将一些丢失的RSVP排序到事件中是有用的

不幸的是,表单中有几个嵌套字段,而对这些字段进行反解析被证明是很困难的。下面是一个原始表单post的示例(数据模糊):


我尝试过使用一些方法来分解散列,但由于其中一些方法的嵌套性质,这很难实现。我还尝试使用URI.www_form_decode和ActiveSupport::JSON.decode,但两者都不起作用。我在想,一定有一个简单的方法来做这件事,我错过了。希望有人能提出建议

到底是什么给你带来了麻烦

如果你有

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

等等…

到底是什么给你带来了麻烦

如果你有

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

以此类推……

如果泰勒的方法无法解决这个问题,而你相信你的观点,并承认这不是一个好主意。。。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"]

如果泰勒的方法不适用于这一关,你相信你的进口,并承认这不是一个好主意。。。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,因为我读到了关于使用evals的安全问题。在这种有限的使用中,而不是在应用程序中,可能还可以。谢谢。我一直在努力避免使用evals,因为我已经读到了关于使用evals的安全问题。在这种有限的使用中,而不是在应用程序中,可能还可以。谢谢。我遇到的问题是将字符串返回到散列中,但是当我对从活动记录返回的字符串调用eval()时,这对我来说很有效。谢谢。我遇到的问题是将字符串返回到散列中,但是当我对从活动记录返回的字符串调用eval()时,这对我来说很有效。谢谢