从提取物 URL 中获取查询字符串(如果存在)

Get query string from extract URL if exists

我正在尝试从传递的 URL 的查询字符串中获取变量 prop 的值,类似于 this 线程中的绅士所做的。

如果 URL 中有查询字符串,它会工作,但如果没有,我会得到 CGI.parse undefined method 'split' for nil:NilClass 错误。我做了研究,问题是因为没有要拆分的查询。

所以我的问题是如何测试是否存在任何查询字符串,然后通过 CGI.parse 运行 来查看 prop 查询字符串是否是其中之一?我想我可能可以通过 Regex 做到这一点,但我希望有一个 Rails 解决方案。

如有任何帮助,我们将不胜感激。

谢谢

代码: 我也在尝试获取 URL 引荐来源网址的域名。这就是为什么我在那里有那个变量。

url = request.env['HTTP_REFERER']
encoded_url = URI.encode(url.to_s)
parse = URI.parse(encoded_url)
domain = parse.host
puts domain
params = CGI.parse(parse.query)
puts params['prop'].first

更新: 通过添加附加代码,我得到了错误消失。但我仍然想知道是否有更好的 Rails 解决方案。我对 Rails 还是很陌生,所以我想确保我做的是正确的。

if encoded_url.include? "?prop"
    params = CGI.parse(parse.query)
    puts params['prop'].first
end

可以使用 params[] 哈希访问 URL 中查询字符串中的键,即使 URL 不存在于应用程序本身中。这也是rails与外界沟通的便捷方式。请注意,rails 在使用 params[] 散列时平等对待所有 HTTP 动词。
用法:puts params[:your_key]