2010-12-15 1 views
1

В рельсах 2.3.8 Я пытаюсь получить базовый файл before_filter. Он работает, если я делаю это в отдельных контроллерах, но теперь я хочу сделать это в своем ApplicationController.Rails игнорирует мое определение фильтра в ApplicationController

class ApplicationController < ActionController::Base 

    before_filter :hello 

private 

    def hello 
     puts "HELLO!" 
    end 

end 

Я ожидаю, что это, чтобы заставить его работать привет перед запуском любого моих действий контроллера, без необходимости ссылаться на фильтры на все в моих классах контроллеров. Но, похоже, это просто игнорирует (никогда не называя «привет»). Почему это может быть так?

+0

Почему, по вашему мнению, фильтр не вызывается? Просто для тестирования место переадресации в фильтр или отправить весь код фильтра – Bohdan 2010-12-15 18:34:48

ответ

1

Все остальные контроллеры должны наследоваться от ApplicationController так, например:

class MyOtherController < ApplicationController 

только ApplicationController должен наследоваться от ActionController :: Base

Rails игнорировал мой перед фильтром, потому что я объявил мой другой контроллер будет также унаследовав от ActionController :: Base.

По крайней мере, я подумал, что это было ясно, но, читая это, Action Controller Overview guide, он приводит примеры (в некоторых случаях) других контроллеров, наследующих ActionController :: Base. Так что это сбивает с толку. В любом случае он исправляет мою проблему, если я всегда наследую ActionController

0

Я знаю, что это не поможет, но ваш код правильно и работает, когда я проверял, хотя на Rails 3.