Почему вы хотите использовать один и тот же контроллер для обработки единственного и множественного маршрута? - PullRequest
2 голосов
/ 09 июля 2010

Я работаю над приложением rails и использую уникальный ресурс. Однако имя контроллера для единственного ресурса является множественным. Например, map.resource activity_report указывает на activity_reports_controller.

Объяснение, данное в руководстве по rails 3: «... вы можете использовать один и тот же контроллер для единственного и множественного маршрута ...» Это разумное объяснение, но каков вариант использования для использование одного и того же контроллера для обработки единственного и множественного маршрутов?

Ответы [ 3 ]

0 голосов
/ 09 июля 2010

В приложении RESTful Rails обычно выполняется сопоставление одного контроллера на ресурс RESTful.Например, скажем, мы хотели, чтобы контроллер обрабатывал логины пользователей (/session), а также предоставлял список пользователей, которые в данный момент вошли в систему (/sessions).Логически мы могли бы поместить обе эти обязанности в SessionsController:

class SessionsController < ApplicationController

  # GET /sessions
  # Display a list of logged in users
  def index
    ...
  end

  # GET /session/new      
  # Display the login form
  def new
    ...
  end

  # POST /session
  # Authenticate a user
  def create
    ...
  end
end

В качестве альтернативы можно было бы разделить функциональность для перечисления зарегистрированных пользователей на отдельный контроллер администрирования.

0 голосов
/ 09 июля 2010

Другая ситуация, в которой я могу себе представить, используя ее, скажем, (и это не обязательно бизнес-модель, которую вы хотели бы, но оставайтесь со мной на мгновение), вы собираетесь сделать сайт обзоров фильмов и информация о фильме. Таким образом, с одной стороны, у вас будет ссылка на список последних обзоров, представляющая собой маршрут множественного ресурса, что-то вроде этого:

http://yoursite.com/reviews?count=5

Итак, в этом случае у вас есть контроллер для коллекции, верно? Но вы будете просматривать каждый фильм только один раз. Так что, если вы хотите обеспечить легкий доступ к обзору фильма?

http://yoursite.com/movies/pirates_of_the_carribean_2/review

Ну, есть вложенный маршрут с одним ресурсом, потому что у фильма есть один обзор, верно?

0 голосов
/ 09 июля 2010

Вы можете использовать его.

class UsersController < Application
end

map.resource :user
map.resources :users
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...