有没有办法在Rails中通过URL字符串获取查询字符串?

我想传递一个URL字符串:

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

我怎么才能拿到idempid

推荐答案

如果字符串中有URL,则使用URI和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"

请使用这些标准库,不要try 使用正则表达式.

另请参见下面关于Rack::Utils.parse_query的Quv comments .

参考资料:


Update:现在我可能会使用标准库中的Addressable::Uri而不是URI:

url = Addressable::URI.parse('http://www.example.com?id=4&empid=6')
url.query_values                  # {"id"=>"4", "empid"=>"6"}
id    = url.query_values['id']    # "4"
empid = url.query_values['empid'] # "6"

Ruby-on-rails相关问答推荐

合成轨道布局

Ruby on Rails - 外键不匹配

Rails 7 - 富文本不显示附加的媒体内容

为什么 2 个关键字参数被解释为 1?

为什么 Rails 执行器不能识别内核的改进?

Rails 7 应用程序 - 引用模型文件时出现未初始化常量错误

Rails 自动加载完全大写的名称,如 API

2个空格或1个制表符,Rails社区的缩进标准是什么?

将 defer 属性添加到 javascript_include_tag Rails

如何在rails中发回js.haml

使用 SQLite 3 将 RoR 应用程序部署到 Heroku 失败

Rails 3.1 在开发模式下非常慢,因为assets资源 ,怎么办?

如何拯救 OmniAuth::Strategies::OAuth2::CallbackError?

您将 Rack 中间件文件和要求放在哪里?

Ruby 根据属性在数组中查找并返回对象

为什么 RSpec 在 Rails 下这么慢?

如何跳过失败的迁移? (耙分贝:迁移)

在 Ruby on Rails 中的控制器中获取 URL 的锚部分

Ruby:如何将一种方法接收到的所有参数和块传递给另一种方法?

Ruby on Rails Bootstrap Glyphicons 不工作