Rails Routes против параметров URL - PullRequest
2 голосов
/ 04 февраля 2011

У меня двусторонний вопрос, надеюсь, вы сможете мне помочь.

В качестве небольшого контекста, у меня есть приложение rails с настройкой запроса модели / контроллера / представления. Он используется для того, чтобы пользователь отправил запрос другому пользователю, и предоставляет два специальных средства в рамках действия обновления (пытается остаться RESTful) - принять и отклонить (принять или отклонить запрос).

Итак, мои вопросы:

  • Во-первых, каков общепринятый подход к настройке URL-адреса для доступа к определенному типу действия (в этом случае принятие или отклонение - это оба запроса обновления)? Лучше передать его с помощью параметра (например, /requests/11?response=accept) или использовать именованные маршруты (например, /requests/11/accept)

  • Во-вторых, если вы используете именованные маршруты, как вы можете определить, какой из названных маршрутов отвечал за вызов контроллера? Я думаю, что вы можете использовать request.url() или что-то подобное, чтобы проверить фактический URL (например, /requests/11/accept), но это кажется хрупким подходом для меня. Я пытался найти другие возможные способы сделать это, но не могу найти приличный способ.

1 Ответ

1 голос
/ 08 января 2012

Я предпочитаю / запросы / 11 / принять /requests/11?response=accept.

Принять и отклонить это поведения, которые изменят состояние ресурса запроса, поэтому операция PUT для одного объектаподходящее.

Вы можете определить маршрут в вашей конфигурации маршрутов, как показано ниже:

resources :requests do
  member {put :accept, :decline}
end

Вы получите два маршрута

accept_request maps to {:action=>"accept", :controller=>"requests"}
decline_request maps to {:action=>"decline", :controller=>"requests"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...