Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用request.url时未定义拆分方法_Ruby On Rails_Parsing_Url_Parameters - Fatal编程技术网

Ruby on rails 使用request.url时未定义拆分方法

Ruby on rails 使用request.url时未定义拆分方法,ruby-on-rails,parsing,url,parameters,Ruby On Rails,Parsing,Url,Parameters,我正在尝试获取我的页面的当前url以及与之相关的参数。当我手动输入url时,未定义的拆分方法错误不会发生。我尝试了以下方法: request.url request.original\u url 请求完整路径 加入 id = request.original_url 并增加了这个功能 def original_url base_url + original_fullpath end 下面是目前对我有效的方法,但我不能每次都使用相同的url和参数,因此此方法以后将不起作用 #pars

我正在尝试获取我的页面的当前url以及与之相关的参数。当我手动输入url时,未定义的拆分方法错误不会发生。我尝试了以下方法:

request.url

request.original\u url

请求完整路径

加入

id = request.original_url
并增加了这个功能

def original_url
  base_url + original_fullpath
end
下面是目前对我有效的方法,但我不能每次都使用相同的url和参数,因此此方法以后将不起作用

   #parse current url
    #what I would like below in comment
    #id = request.original_url
    url =   "http://127.0.0.1:3000/reviews/new?id=2"
    uri    = URI.parse(url)
    params = CGI.parse(uri.query)
    id     = params['id'].first

如果我遗漏了什么,请提供任何帮助或提示。

也有同样的问题。url中缺少查询参数是导致此问题的原因

url = "http://127.0.0.1:3000/reviews/new" # no query params
uri = URI.parse(url)
query = uri.query # nil
params = CGI.parse(query) # Undefined split Exception
这就解决了这个问题:

uri = URI.parse(url)
if uri.query
  params = CGI.parse(uri.query)
  id = params['id'].first
end

有同样的问题。url中缺少查询参数是导致此问题的原因

url = "http://127.0.0.1:3000/reviews/new" # no query params
uri = URI.parse(url)
query = uri.query # nil
params = CGI.parse(query) # Undefined split Exception
这就解决了这个问题:

uri = URI.parse(url)
if uri.query
  params = CGI.parse(uri.query)
  id = params['id'].first
end