2009-02-09 5 views
8

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

Код выглядит

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

И я намерен получить что-то вроде/добавить/http://sctackoverflow.com/ работает

ответ

10

Пробовали ли вы использовать параметры SPLAT?

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

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

    url = protocol + "//" + address 
end 
2

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

get %r{/add/(.+)} do 
    url = params[:captures] 
end 
Смежные вопросы