Маршруты RESTful в контроллерах Padrino

Падрино поддерживает идею вложенных маршрутов. Вот один пример из документации:

SimpleApp.controllers :product, :parent => :user do
  get :index do
    # "/user/#{params[:user_id]}/product"
  end

  get :show, :with => :id do
    # "/user/#{params[:user_id]}/product/show/#{params[:id]}"
  end
end

Однако я хотел бы иметь следующие сопоставления:

 GET /users                       # '/' in :users controller
 GET /users/:id                   # '/:id' in :users controller

 GET /users/:user_id/tweets       # '/' in :tweets controller
 GET /users/:user_id/tweets/:id   # '/:id' in :tweets controller

 GET /tweets                      # '/' in :tweets controller, too
 GET /tweets/:id                  # '/:id' in :tweets controller, too

Это возможно?


person John Feminella    schedule 03.06.2014    source источник


Ответы (2)


Вы пробовали :Optional => true в определении вашего маршрута (1-я строка)?

person lmerino    schedule 12.08.2014

person    schedule
comment
Что делать, если пользователь отсутствует? /tweets и /tweets/:id все еще работают? - person John Feminella; 29.07.2014
comment
Это зависит от того, как вы настроите логику внутри ваших контроллеров. Какой маршрут вы бы имели в виду? - person lmerino; 29.07.2014
comment
Притворитесь, что нет никакой логики и что мы просто возвращаем строку. Окажутся ли GET /tweets и GET /users/:user_id/tweets в одном и том же месте? - person John Feminella; 29.07.2014
comment
Затем попробуйте вызвать другие действия внутри этих маршрутов: /stackoverflow.com/questions/3384134/alias-url-with-sinatra-padrino" title="псевдоним URL-адреса с Sinatra Padrino"> stackoverflow.com/questions/3384134/ - person lmerino; 29.07.2014