使用sinatra,我遇到了一个小问题:当我使用带有斜杠的参数时,它会混淆路由器引擎。那么有一种很好的方法来处理这种param而不必编码吗?
代码看起来像
get 'add/:url' do
#....
end
我打算得到像/ add / http://sctackoverflow.com/一样的工作
答案 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]