Интерфейс администратора в Rails

У меня есть контроллер администратора, расположенный в controllers/admin/admin_controller.rb. У меня также есть контроллер страниц, расположенный в controllers/admin/pages_controller.rb. pages_controller.rb наследуется от admin_controller.rb в route.rb, у меня есть пространство имен администратора как таковое:

map.namespace :admin do |admin|
   admin.resources :pages
end
  • Я хочу, чтобы у администратора были базовые функции CRUD в pages_controller.rb (я знаю, как это сделать)
  • Я хочу, чтобы методы index и show были доступны для внешних пользователей.
  • Я хотел бы, чтобы действия show и index использовали отдельные представления, но один и тот же код.

Вопросы:

  • Должен ли я создать новый pages_controller для внешнего интерфейса или поделиться методами index и show?
  • Если поделиться, как бы я отображал отдельные представления в зависимости от того, является ли URL-адрес /admin/pages или /pages
  • Если поделиться, pages_controller поставить в /controllers/admin (где сейчас) или только в /controllers?

Спасибо большое.


person Yuval Karmi    schedule 15.03.2010    source источник


Ответы (1)


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

map.resources :pages, :only => [:index, :show]

У вас будут представления для каждой пары действий/контроллеров, например. один в представлении/admin/pages и один в /view/pages. Если эти два дублируют код, извлеките его в партиалы и визуализируйте их из обоих.

person tsdbrown    schedule 15.03.2010