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]