Как использовать params с косой чертой с Sinatra?

127
6

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


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


get 'add/:url' do
#....
end

И я собираюсь получить что-то вроде /add/ http://sctackoverflow.com/ working

спросил(а) 2009-02-09T20:23:00+03:00 12 лет назад
1
Решение
75

Благодарю вас, я не слышал о параметрах splat и отлично работает для этого случая. В самом деле, я просмотрел документацию, и я нашел еще короче, используя параметры захвата и регулярные выражения:

get %r{/add/(.+)} do
url = params[:captures]
end

ответил(а) 2009-02-10T01:28:00+03:00 12 лет назад
142

Вы пытались использовать параметры splat?


Что-то вроде:

get '/add/*' do
protocol = params[:splat].first
address = params[:splat][1..-1].join('/')

url = protocol + "//" + address
end

ответил(а) 2009-02-09T20:58:00+03:00 12 лет назад
74

или используйте:


url = request.fullpath[5..-1]

ответил(а) 2010-12-29T17:58:00+03:00 10 лет, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема