像在Ruby on Rails中查询string一样parsingstring
我有这样的string:
"foo=bar&bar=foo&hello=hi"
Ruby on Rails是否提供方法来parsing它,就好像它是查询string一样,所以我得到一个像这样的哈希值:
{ :foo => "bar", :bar => "foo", :hello => "hi" }
或者我必须自己写吗?
编辑
请注意,上面的string不是来自URL的实际查询string,而是来自Facebook Connect的存储在cookie中的string。
答案取决于你正在使用的Rails版本。 如果您使用的是2.3或更高版本,请使用Rack的内置parsing器来解释参数
Rack::Utils.parse_nested_query("a=2") #=> {"a" => "2"}
如果你在较老的Rails,你确实可以使用CGI::parse
。 请注意,散列和数组的处理方式在模块之间有着微妙的差异,因此您需要validation所获取的数据是否适合您select的方法。
您也可以将Rack::Utils
包含在您的课堂中,以便读取。
该
CGI::parse("foo=bar&bar=foo&hello=hi")
给你
{"foo"=>["bar"], "hello"=>["hi"], "bar"=>["foo"]}
如果你谈论正在使用的Url来获取关于它们的参数的数据
> request.url => "http://localhost:3000/restaurants/lokesh-dhaba?data=some&more=thisIsMore"
然后获取查询参数。 使用
> request.query_parameters => {"data"=>"some", "more"=>"thisIsMore"}
编辑:正如在评论中所说,如果有人想伤害你,同步键可以把你的服务器closures。 当我在低调的应用程序上工作时,我仍然做得很多,因为它使得事情变得更容易,但是我不会再为高风险的应用程序
不要忘记象征着获得你想要的结果的关键
Rack::Utils.parse_nested_query("a=2&b=tralalala").deep_symbolize_keys
这个操作对重复是破坏性的。