与sinatra一起玩,我陷入了一个小问题:当我用斜杠使用params时,它会混淆路由器引擎。那么是否有一种很好的方式来处理这种param而不必对它进行编码?如何使用带Sinatra的斜杠参数?
代码看起来像
get 'add/:url' do
#....
end
,我打算让像/添加/ http://sctackoverflow.com/工作
与sinatra一起玩,我陷入了一个小问题:当我用斜杠使用params时,它会混淆路由器引擎。那么是否有一种很好的方式来处理这种param而不必对它进行编码?如何使用带Sinatra的斜杠参数?
代码看起来像
get 'add/:url' do
#....
end
,我打算让像/添加/ http://sctackoverflow.com/工作
你尝试用图示的参数?
喜欢的东西:
get '/add/*' do
protocol = params[:splat].first
address = params[:splat][1..-1].join('/')
url = protocol + "//" + address
end
谢谢你,我还没有听说过图示参数,它完全适用于这种情况。事实上,我已经研究过的文档,我发现更短的使用Capture参数和正则表达式:
get %r{/add/(.+)} do
url = params[:captures]
end
或使用:
url = request.fullpath[5..-1]