我有以下路径:

http://192.168.56.10:4567/browse/foo/bar?x=100&y=200

我绝对想要“http://192.168.56.10:4567/browse/”后面的所有字符串。
使用splat不起作用(只捕获“foo/bar”):
get '/browse/*' do

正则表达式也不是(也只捕获“foo/bar”):
get %r{/browse/(.*)} do

在params散列中,x和y参数都是可以访问的,但是在我想要的参数上做一个.map似乎是不合理的,而且不像ruby(而且,这只是一个例子..我的情妇们其实很有活力,而且很多)。有更好的办法吗?
更多信息:我的路径看起来是这样的,因为它正在与一个api通信,我使用这个路由来确定我将进行的api调用。我需要绳子朝这边看。

最佳答案

如果您愿意忽略path param中的hash标记,这应该可以工作(btw browser将忽略url中hash之后的任何内容)
更新的答案

get "/browse/*" do
  p "#{request.path}?#{request.query_string}".split("browse/")[1]
end

或者更简单
request.fullpath.split("browse/")[1]

关于ruby - 获取Sinatra路线的完整路径,包括问号后的所有内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14479787/

10-14 19:22