Как использовать параметры со слэшами в Синатре?
-
22-08-2019 - |
Вопрос
Играть с Синатра, у меня возникла небольшая проблема:когда я использую параметры с косой чертой, это сбивает с толку движок маршрутизатора.Итак, есть ли хороший способ обрабатывать такие параметры без необходимости их кодирования?
Код выглядит как
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]
Не связан с StackOverflow