ruby on rails - method - Rieles: nombre de la acción del controlador en la cadena
ruby method (6)
En el caso específico de una acción de Rails (a diferencia del caso general de obtener el nombre del método actual) puede usar params[:action]
Alternativamente, es posible que desee buscar 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.
Tengo una pregunta de 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
¿Cuál es una forma de obtener this_def_name
?
Este fragmento funciona para Rails 3
class ReportsController < ApplicationController
def summary
logger.debug self.class.to_s + "." + self.action_name
end
end
imprimirá
. . .
ReportsController.summary
. . .
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.
descubrió que es posible con self.current_method
se encuentra fácilmente en http://www.ruby-forum.com/topic/75258
Solo hice lo mismo. Lo hice en el controlador auxiliar, mi código es:
def get_controller_name
controller_name
end
def get_action_name
action_name
end
Estos métodos devolverán el controlador actual y el nombre de la acción. Espero eso ayude
nombre del controlador:
<%= controller.controller_name %>
return => ''usuarios''
Nombre de la acción:
<%= controller.action_name %>
return => ''mostrar''
carné de identidad:
<%= ActionController::Routing::Routes.recognize_path(request.url)[:id] %>
return => ''23''
Rails 2.X : @controller.action_name
Rails 3.1.X : controller.action_name
, action_name
Rails 4.X : action_name