如何使用带有Sinatra斜线的参数?

时间:2009-02-09 17:23:30

标签: ruby parameters routing routes sinatra

使用sinatra,我遇到了一个小问题:当我使用带有斜杠的参数时,它会混淆路由器引擎。那么有一种很好的方法来处理这种param而不必编码吗?

代码看起来像

get 'add/:url' do
   #....
end

我打算得到像/ add / http://sctackoverflow.com/一样的工作

3 个答案:

答案 0 :(得分:11)

您是否尝试过使用splat参数?

类似的东西:

get '/add/*' do
  protocol = params[:splat].first
  address = params[:splat][1..-1].join('/')

  url = protocol + "//" + address
end

答案 1 :(得分:2)

谢谢,我还没有听说过splat参数,它适用于这种情况。实际上,我查看了文档,我发现使用捕获参数和正则表达式更短:

get %r{/add/(.+)} do
  url = params[:captures]
end

答案 2 :(得分:2)

或使用:

url = request.fullpath[5..-1]