Интерфейс администратора в Rails - PullRequest
5 голосов
/ 15 марта 2010

У меня есть контроллер администратора, расположенный в controllers/admin/admin_controller.rb У меня также есть контроллер страниц, расположенный в controllers/admin/pages_controller.rb pages_controller.rb наследуется от admin_controller.rb в routs.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?

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

1 Ответ

3 голосов
/ 15 марта 2010

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

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

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

...