aitor
June 13, 2007, 2:02pm
1
Hola
como es posible saber de antemano que metodo se va a ejecutar al acceder
a un controlador?
necesitaba pasar el nombre de la accion a un filtro antes de que dicha
accion se ejecutase algo como
before_filter do |a|
a.accion( controller_name.action_name )
action_name # controller.action_name
end
def accion( a )
@log = “se ejcuta la accion#{a}”
end
Gracias por la info.
Un saludo
aitor
June 13, 2007, 5:01pm
3
params[:action]
si pero no.
con params[:action] o action_name obtienes el nombre del método pero una
vez se halla ejecutado, yo necesitaba saber el nombre del método antes
de que se vaya a ejecutar para poder pasarselo al before_filter
seguiré googleando a ver si encuentro algo.
gracias
aitor
June 13, 2007, 5:24pm
4
Hola,
params[:action]
si pero no.con params[:action] o action_name obtienes el nombre del método pero una
vez se halla ejecutado, yo necesitaba saber el nombre del método antes
de que se vaya a ejecutar para poder pasarselo al before_filter
Precisamente si le pones un before_filter en ese filtro todavÃa no se ha
ejecutado la acción, y sin embargo tienes disponibles todos los
parámetros que la acción va a recibir, siendo uno de ellos el nombre
mismo de la acción. Asà que directamente si en el before_filter accedes
a params[:action] deberÃas ver el nombre de la acción sin problemas.
Si dentro del before_filter por lo que sea no quieres que la acción se
llegue a ejecutar, puedes interrumpir el flujo normal devolviendo false
o redirigiendo a otro sitio.
saludos,
j
aitor
June 13, 2007, 5:58pm
5
Asà que directamente si en el before_filter accedes
a params[:action] deberÃas ver el nombre de la acción sin problemas.
ok, muchas gracias. tienes razón.
lo que me estaba liando a mi es que le estaba pasando el action_name
como parámetro al before_filter y por eso generaba errores.
gracias de nuevo.
Un saludo
aitor
June 13, 2007, 5:31pm
6
pero si lo tratas de recoger desde el método llamado desde
before_filter, lo puedes recuperar antes de que sea ejecutado:
class FooController < ApplicationController
before_filter :init
def init
puts “init: #{action_name}”
end
def bar
puts “bar”
render(:text => “foo”)
end
end
saludos
aitor escribió: