Пространство имен ApplicationController в Rails - PullRequest
3 голосов
/ 21 января 2011

У меня есть обычный класс ApplicationController и класс Admin :: ApplicationController. Проблема в том, что Admin :: ApplicationController, похоже, не загружается и не выполняется, или что-то еще. Разве мне не разрешено иметь контроллер приложений в пространстве имен? Причиной этого является то, что я могу проверить, является ли пользователь администратором с помощью CanCan, и перенаправить его, если это не так.

Ответы [ 2 ]

5 голосов
/ 21 января 2011

Назовите этот контроллер Admin::BaseController, так как это больше действует как основа пространства имен, чем что-либо предпринимает для приложения. Чтобы он выполнял то, что вы хотите, вам нужно заставить все контроллеры пространства имен администратора наследоваться от этого контроллера.

2 голосов
/ 21 января 2011

Единственный раз, когда я видел такое пространство имен, это когда контроллер вложен в подпапку. Поэтому Admin :: ApplicationController должен находиться в controllers / admin / application_controller.rb

Одно из возможных решений:

Если вы хотите, чтобы все, кроме домашней страницы, выводило их из строя, просто установите before_filter на контроллере приложения с исключением для home / index, например:

ApplicationController.rb

before_filter :authorize_admin

def authorize_admin
   //dostuff
end

HomeController.rb

skip_before_filter :authorize_admin, :only => ['index']

Где индекс - это ваше действие, которое вы хотите пропустить. Оставьте только один, чтобы пропустить фильтр для всего контроллера.

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