Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.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 获取Sinatra路线的完整路径,包括问号后的所有内容_Ruby_Routing_Sinatra - Fatal编程技术网

Ruby 获取Sinatra路线的完整路径,包括问号后的所有内容

Ruby 获取Sinatra路线的完整路径,包括问号后的所有内容,ruby,routing,sinatra,Ruby,Routing,Sinatra,我有以下路径: http://192.168.56.10:4567/browse/foo/bar?x=100&y=200 我绝对想要后面的一切”http://192.168.56.10:4567/browse/“一串 使用splat不起作用(仅捕捉“foo/bar”): 正则表达式也没有(也只捕获“foo/bar”): x和y参数都可以在params散列中访问,但是在我想要的参数上做一个.map看起来不合理,不像ruby(而且,这只是一个例子..我的参数实际上是非常动态和大量的)。有更

我有以下路径:

http://192.168.56.10:4567/browse/foo/bar?x=100&y=200
我绝对想要后面的一切”http://192.168.56.10:4567/browse/“一串

使用splat不起作用(仅捕捉“foo/bar”):

正则表达式也没有(也只捕获“foo/bar”):

x和y参数都可以在params散列中访问,但是在我想要的参数上做一个.map看起来不合理,不像ruby(而且,这只是一个例子..我的参数实际上是非常动态和大量的)。有更好的方法吗


更多信息:我的路径看起来是这样的,因为它正在与API通信,我使用路由来确定我将进行的API调用。我需要字符串这样看。

如果您愿意忽略path param中的hash标记,这应该可以工作(顺便说一句,浏览器将忽略URL中hash之后的任何内容)

get "/browse/*" do
  a = "#{params[:splat]}?#{request.env['rack.request.query_string']}"
  "Got #{a}"
end
最新答案

甚至更简单

request.fullpath.split("browse/")[1]

路线的“/foo/bar”部分始终存在?
get "/browse/*" do
  a = "#{params[:splat]}?#{request.env['rack.request.query_string']}"
  "Got #{a}"
end
get "/browse/*" do
  p "#{request.path}?#{request.query_string}".split("browse/")[1]
end
request.fullpath.split("browse/")[1]