2013-01-23 68 views
1

我有以下的道路上的一切:获取西纳特拉路线的完整路径,包括问号

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

我想自带绝对一切“http://192.168.56.10:4567/browse/”在一个字符串中。

使用图示不起作用(仅捕获 “富/栏”):

get '/browse/*' do 

也不对正则表达式(也只捕捉为 “foo /栏”):

get %r{/browse/(.*)} do 

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

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

+0

路由的'/ foo/bar'部分始终存在? – nicooga

回答

4

如果你愿意忽略散列标签路径PARAM这应该工作(BTW浏览器会忽略在URL散列后的任何东西)

更新答案

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

或者更简单

request.fullpath.split("browse/")[1] 
0
get "/browse/*" do 
    a = "#{params[:splat]}?#{request.env['rack.request.query_string']}" 
    "Got #{a}" 
end