Tengo una pregunta sobre Rails.
¿Cómo obtengo el nombre de una acción del controlador dentro de la acción del controlador?
Por ejemplo, en lugar de
def create
logger.info("create")
end
Quiero escribir algo como
def create
logger.info(this_def_name)
end
¿Qué es una forma de llegar this_def_name
?
ruby-on-rails
function
Pavel K.
fuente
fuente
before_filter
con un bloque, hazlobefore_filter { |controller| ... }
. stackoverflow.com/questions/2669663/…action_name
funciona en Rails 3.2.13, ycontroller.action_name
no lo hace.En el caso específico de una acción Rails (en oposición al caso general de obtener el nombre del método actual) puede usar
params[:action]
Alternativamente, es posible que desee considerar la personalización del formato de registro de Rails para que el nombre de la acción / método esté incluido en el formato en lugar de estar en su mensaje de registro.
fuente
action_name == 'new'
(sin prefijar) todavía funciona para mí en Rails 3.2nombre del controlador:
return => 'usuarios'
nombre de acción:
return => 'mostrar'
carné de identidad:
return => '23'
fuente
Este fragmento funciona para Rails 3
imprimirá
fuente
La respuesta de mikej fue muy precisa y útil, pero lo que también quería saber era cómo obtener el nombre del método actual en los rieles.
descubrí que es posible con self.current_method
se encuentra fácilmente en http://www.ruby-forum.com/topic/75258
fuente
Yo solo hice lo mismo. Lo hice en el controlador auxiliar, mi código es:
Estos métodos devolverán el controlador actual y el nombre de la acción. Espero eso ayude
fuente
controller_name
, que es un método que devuelve el nombre del controlador actual, en otro método que solo llamacontroller_name
? ¿Por qué no simplemente llamarcontroller_name
y terminar?