與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]