2

我有以下路径:

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

x 和 y 参数都可以在 params 哈希中访问,但是在我想要的那些上做一个 .map 似乎不合理且不像 ruby​​ (另外,这只是一个例子......我的参数实际上是非常动态和众多的) . 有一个更好的方法吗?

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

4

2 回答 2

5

如果您愿意忽略路径参数中的哈希标记,这应该可以工作(顺便说一句,浏览器会忽略 URL 中的哈希后的任何内容)

更新的答案

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

或者更简单

request.fullpath.split("browse/")[1]
于 2013-01-23T13:57:50.983 回答
1
get "/browse/*" do
  a = "#{params[:splat]}?#{request.env['rack.request.query_string']}"
  "Got #{a}"
end
于 2013-01-23T13:06:26.967 回答