Forum: Rails-ES saber la accion que se va ejecutar (action_name)

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
94ac01209314464490a94b47f051be0b?d=identicon&s=25 aitor (Guest)
on 2007-06-13 14:02
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
1f2eadfb41362800ebc2cf211b91d0f7?d=identicon&s=25 javier ramirez (Guest)
on 2007-06-13 14:11
(Received via mailing list)
Hola,

> como es posible saber de antemano que metodo se va a ejecutar al acceder a un 
controlador?
>
params[:action]

saludos,

javier ramirez
94ac01209314464490a94b47f051be0b?d=identicon&s=25 aitor (Guest)
on 2007-06-13 17:01
> 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
1f2eadfb41362800ebc2cf211b91d0f7?d=identicon&s=25 javier ramirez (Guest)
on 2007-06-13 17:24
(Received via mailing list)
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
90ea347c45cdfbc1c5767dd6304d9c10?d=identicon&s=25 Borja Martín (Guest)
on 2007-06-13 17:31
(Received via mailing list)
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ó:
94ac01209314464490a94b47f051be0b?d=identicon&s=25 aitor (Guest)
on 2007-06-13 17:58
> 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
This topic is locked and can not be replied to.