Вопрос

Играть с Синатра, у меня возникла небольшая проблема:когда я использую параметры с косой чертой, это сбивает с толку движок маршрутизатора.Итак, есть ли хороший способ обрабатывать такие параметры без необходимости их кодирования?

Код выглядит как

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]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top