如何从Rails中的URL获取查询string

有没有办法在Rails中传递URLstring中的查询string?

我想传递一个URLstring:

http://www.foo.com?id=4&empid=6 

我怎样才能得到idempid

5 Solutions collect form web for “如何从Rails中的URL获取查询string”

如果你在一个string中有一个URL,那么使用URI和CGI来区分它:

 url = 'http://www.foo.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" 

请使用标准库这个东西,不要试图用正则expression式自己做。

参考文献:

  • CGI.parse
  • URI.parse

在Ruby on Rails控制器方法中,URL参数在一个名为params的散列中可用,其中键是参数名称,但是作为Ruby“符号”(即以冒号作为前缀)。 所以在你的例子中, params[:id]将等于4params[:empid]将等于6

我会build议阅读一个很好的Rails教程,其中应包括这样的基本知识。 这里有一个例子 – 谷歌将会出现更多:

 Rack::Utils.parse_nested_query("a=2") #=> {"a" => "2"} 

引用来自: parsing一个string,就好像它是在Ruby on Rails中的查询string

以轨道控制器的方式parsing查询string。 嵌套查询,通常通过像这样的表单字段名称: name="awesome[beer][chips]" # => "?awesome%5Bbeer%5D%5Bchips%5D=cool"name="awesome[beer][chips]" # => "?awesome%5Bbeer%5D%5Bchips%5D=cool" -and-diced 'into a awesome hash: {"awesome"=>{"beer"=>{"chips"=>nil}}}

http://rubydoc.info/github/rack/rack/master/Rack/Utils.parse_nested_query https://github.com/rack/rack/blob/master/lib/rack/utils.rb#L90

 vars = request.query_parameters vars['id'] vars['empid'] 

等等..

这不是最好的方法,但它的工作原理:

 request.query_string.split(/&/).inject({}) do |hash, setting| key, val = setting.split(/=/) hash[key.to_sym] = val hash end 

这将返回与所有的GET PARAMS( :name => value )哈希。 或者只是使用request.query_string方法,取决于你想获得你的GET参数的格式。 你也可以使用rake gem的request.query_params

  • Rails,ruby,如何sorting一个数组?
  • 相同的Rails 4路由GET和POST请求
  • `after_create`和`after_save`和什么时候使用哪个区别?
  • Rails 3.如何以编辑forms显示两位小数?
  • 在Ruby中validation电子邮件地址的最佳/简单方法是什么?
  • 在rails中渲染json的最快方法是什么?
  • Rails 3 - Bundler / Capistrano错误
  • 丢失了我的schema.rb! 可以重新生成吗?
  • 在rails erb中做什么<%==%>?
  • Rails嵌套的content_tag
  • Rails 3.0中的frorror_messages