before_filter не наследуется от родительского контроллера правильно? - PullRequest
3 голосов
/ 02 января 2011

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

В частности, у меня есть контроллер администратора, который был сгенерирован с помощью:

rails generate controller admin

Я добавил только одно действие в контроллер администратора, фильтр before и метод приватного фильтра

class AdminController < ApplicationController

  before_filter require_admin_creds

  def index
  end

private

  def require_admin_creds
    unless current_user && current_user.admin?
        flash[:error] = ...
        redirect_to ....
    end
  end
end

Затем я создал свои вложенные ресурсы в разделе администратора с помощью:

rails generate scaffold admin/model

Хотя мой индекс администратора действительно получает фильтр, индекс администратора / модели (или любые другие действия) - нет. Что здесь происходит под капотом, что я, должно быть, исключил?

Заранее спасибо.

Ответы [ 3 ]

4 голосов
/ 02 января 2011

Сделать require_admin_creds защищенным методом, а не приватным.

1 голос
/ 02 января 2011

Вы изменили:

Admin::ModelController < ApplicationController 

на

Admin::ModelController < AdminController

?

Это создает наследование, не помещая контроллер модели в пространство имен администратора.*

0 голосов
/ 22 апреля 2011

Дважды проверьте ваш синтаксис.У вас есть:

before_filter require_admin_creds

, но я думаю, что должно быть:

before_filter :require_admin_creds

, где вы используете символ, а не имя переменной / метода.

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