Можно ли указать необязательный параметр URL в маршруте винограда

Можно ли указать необязательный параметр URL в маршруте винограда.

Т.е. для конечной точки, например:

    get '/user/:name/:location/:id' do
    end

Есть ли способ попасть в эту конечную точку с параметром «местоположение» или без него в URL-адресе.

Я попытался определить конечную точку с помощью скобки для необязательного параметра, как показано ниже:

    get '/user/:name/(:location)/:id' do
    end

Но это не сработало


person twinkle    schedule 22.10.2015    source источник


Ответы (1)


Я бы посоветовал вам использовать location в качестве параметра запроса. Так что вы сможете сделать его необязательным и оставить только 1 маршрут.

params do
  optional :location, type: String
end

get '/user/:name/:id' do
  if params[:location].present?
    # some code
  else
    # some code
  end
end

Этот маршрут будет сопоставлен /user/:name/:id?location={something} с указанием местоположения и /user/:name/:id без него.

person Brozorec    schedule 23.10.2015