En rails 2.3.8, estoy tratando de hacer que funcione un filtro before_filter básico. Funciona si hago estas cosas en controladores individuales, pero ahora quiero hacerlo en mi ApplicationController.
class ApplicationController < ActionController::Base
before_filter :hello
private
def hello
puts "HELLO!"
end
end
Espero que esto haga que se ejecute hola antes de ejecutar alguna de mis acciones de controlador, sin la necesidad de hacer referencia a los filtros en mis otras clases de controlador. Pero parece ignorarlo (nunca llamar "hola") ¿Por qué podría ser eso?
Respuestas
1 para la respuesta № 1Todos los demás controladores deben heredar de ApplicationController, por ejemplo:
class MyOtherController < ApplicationController
Solo el ApplicationController debe heredar de ActionController :: Base
Rails estaba ignorando mi filtro anterior porque había declarado que mi otro controlador también heredaba de ActionController :: Base.
Al menos pensé que esto estaba claro, pero leer esto Guía general de Action Controller, da ejemplos (algunas veces) de otros controladores que heredan de ActionController :: Base. Eso es confuso. En cualquier caso, soluciona mi problema si siempre heredo de ActionController
0 para la respuesta № 2
Sé que esto no te ayudará, pero tu código es correcto y funciona cuando lo probé, aunque en Rails 3.