Раздел администратора приложения Rails - PullRequest
7 голосов
/ 28 марта 2009

Я работаю над своим первым приложением на Rails и хочу создать раздел администратора.

Хочу ли я полностью разделить свои представления и контроллеры (то есть в отдельных каталогах) для раздела администратора и остальной части сайта?

Как мне организовать свои представления / контроллеры в пользовательских каталогах (как настроить маршрутизацию)?

Ответы [ 3 ]

8 голосов
/ 28 марта 2009

Чтобы создать контроллеры администратора:

script/generate controller admin/articles

Тогда в вашем файле rout.rb

map.resource :admin do |admin|
  admin.resources :articles, :path_prefix => "admin", :name_prefix => "admin_", :controller => "admin/articles"
end

После этого вы можете получить доступ к URL-адресу индекса:

<%= link_to "Articles Admin", admin_articles_path %>
5 голосов
/ 28 марта 2009
map.namespace :admin do |admin|
  admin.register :controller => 'main', :action => 'register'
  admin.login, :controller => 'main', action => 'login'
  # ...
end

Это то, как вы именуете вещи, добавьте это к другим комментариям здесь об авторизации вещей, и вы в отъезде. Взгляните на плагин restful_authentication для управления пользователями, гораздо быстрее и проще, чем собственный.

Приведенная выше маршрутизация предполагает, что контроллеры и их представления находятся в подкаталоге с именем admin, который, я думаю, вам нужен.

5 голосов
/ 28 марта 2009

Вы также можете хранить приложения и контроллеры на своих местах и ​​использовать Rails-фильтры для контроля доступа, что, как мне кажется, вы ищете здесь.

Если у вас под рукой есть книга AWDWR, перейдите к главе 11 Задача F Административное управление

  • По сути, определяют метод авторизации в app \ controllers \ application.rb, который проверяет авторизацию, перенаправляет на страницу входа, если не авторизован в et.all
  • Отметьте контроллеры, доступ к которым вы хотите ограничить, before_filter s

.

class AdminController < ApplicationController
   before_filter :authorize
   #  ... the rest of the code
end

Это будет перехватывать все вызовы действий, определенных в AdminController, и заставлять их проходить через авторизацию

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