мне нужен маршрут Синатры вести себя следующим образом:несколько необязательных параметров в Синатра маршруте
GET /list/20/10 # Get 20 items with offset 10
GET /list/20 # Get 20 items with default offset
GET /list # Get default number of items with default offset
Я понимаю, я мог бы передать значения в запросе:
GET /list?limit=20&offset=10
, но я хочу передайте их, как описано выше. Я уверен, что есть способ объяснить Синатре/Падрино, что я хочу сделать, но в настоящее время я полностью застрял. Я пробовал:
get :list, :map => '/list', :with => [:limit, :offset] {} # 404 on /list
get :list, :map => '/list/*' { puts params[:splat] } # 404 on /list
get :list, :map => '/list/?:limit?/?:offset?' {} # 404 on /list
get :list, :map => '/list' { redirect url_for(:list, …) } # 302, not convenient for consumers
Как я могу заметить Sinatra, что параметр может быть необязательным?
Нечаянно,
get %r{/list(/[^/]+)*} do
# parse params[:captures]
end
работы, но это выглядит глупо.
Попробуйте следующее: http://stackoverflow.com/a/14885171/1120015 –
@UriAgassi Это то же самое, что и grepping 'regex', я ищу более четкие и прямые пути. – mudasobwa
Я думал, что 'get '/ comments /: start /? do | start = 0 | 'делает трюк для вас ... –