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

时间:2016-11-04 00:28:03

标签: ruby-on-rails url uri query-string querystringparameter

我试图从传递的URL中获取变量prop的值,类似于this线程中的绅士所做的。

如果网址中有查询字符串,但是如果我没有 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

1 个答案:

答案 0 :(得分:2)

即使URL本身不存在,也可以使用params[]哈希访问URL中查询字符串中的键。这也是轨道与外界通信的便利方式。请注意,当使用params[]哈希时,rails会平等地处理所有HTTP谓词 用法:puts params[:your_key]