Как использовать params с косой чертой с Sinatra? - PullRequest
8 голосов
/ 09 февраля 2009

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

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

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

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

Ответы [ 3 ]

11 голосов
/ 09 февраля 2009

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

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

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

  url = protocol + "//" + address
end
2 голосов
/ 29 декабря 2010

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

url = request.fullpath[5..-1]
2 голосов
/ 10 февраля 2009

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

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