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

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

代码看起来像

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

我打算得到像/ add / http://sctackoverflow.com/这样的东西

您是否尝试使用splat参数?

就像是:

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

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

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

或使用:

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