require 'cgi'
url = 'http://www.example.com?id=4&empid=6'
uri = URI.parse(url)
params = CGI.parse(uri.query)
# params is now {"id"=>["4"], "empid"=>["6"]}
id = params['id'].first
# id is now "4"
在Ruby on Rails的控制器方法中,URL参数在一个名为params的散列中可用,其中的键是参数名称,但作为Ruby“符号”(即前缀为冒号)。因此在您的示例中,params[:id]等于4,params[:empid]等于6。 我建议阅读一个好的Rails教程,它应该包括像这样的基础知识。Here的一个例子-谷歌将出现更多:
引用自:Parse a string as if it were a querystring in Ruby on Rails 像rails控制器那样解析查询字符串。嵌套查询,通常通过表单字段名,像这样:name="awesome[beer][chips]" # => "?awesome%5Bbeer%5D%5Bchips%5D=cool",把'sliced-and-diced'变成一个很棒的散列:{"awesome"=>{"beer"=>{"chips"=>nil}}} https://github.com/rack/rack/blob/master/lib/rack/utils.rb#L90
4条答案
按热度按时间ma8fv8wu1#
如果你有一个字符串中的URL,那么使用URI和CGI将其分开:
请使用标准库来处理这些东西,不要尝试自己使用正则表达式。
另请参阅下面Quv关于
Rack::Utils.parse_query
的评论。参考文献:
CGI.parse
URI.parse
更新:这些天我可能会使用
Addressable::Uri
而不是标准库中的URI
:yb3bgrhw2#
等等。
rjzwgtxy3#
在Ruby on Rails的控制器方法中,URL参数在一个名为
params
的散列中可用,其中的键是参数名称,但作为Ruby“符号”(即前缀为冒号)。因此在您的示例中,params[:id]
等于4
,params[:empid]
等于6
。我建议阅读一个好的Rails教程,它应该包括像这样的基础知识。Here的一个例子-谷歌将出现更多:
isr3a4wc4#
引用自:Parse a string as if it were a querystring in Ruby on Rails
像rails控制器那样解析查询字符串。嵌套查询,通常通过表单字段名,像这样:
name="awesome[beer][chips]" # => "?awesome%5Bbeer%5D%5Bchips%5D=cool"
,把'sliced-and-diced'变成一个很棒的散列:{"awesome"=>{"beer"=>{"chips"=>nil}}}
https://github.com/rack/rack/blob/master/lib/rack/utils.rb#L90