Eu tenho uma pergunta do Rails.
Como obtenho o nome de uma ação do controlador dentro da ação do controlador?
Por exemplo, em vez de
def create
logger.info("create")
end
Eu quero escrever algo como
def create
logger.info(this_def_name)
end
O que é uma maneira de obter this_def_name
?
ruby-on-rails
function
Pavel K.
fonte
fonte
before_filter
um bloco, façabefore_filter { |controller| ... }
. stackoverflow.com/questions/2669663/…action_name
funciona no Rails 3.2.13 econtroller.action_name
não.No caso específico de uma ação do Rails (ao contrário do caso geral de obter o nome do método atual), você pode usar
params[:action]
Como alternativa, você pode querer personalizar o formato de log do Rails para que o nome da ação / método seja incluído no formato, e não na sua mensagem de log.
fonte
action_name == 'new'
(unprefixed) ainda trabalha para mim no Rails 3.2nome do controlador:
return => 'usuários'
nome da ação:
return => 'mostrar'
Eu iria:
return => '23'
fonte
Esse snippet funciona para o Rails 3
irá imprimir
fonte
A resposta de mikej foi muito precisa e útil, mas o que eu também queria saber era como obter o nome atual do método nos trilhos.
descobriu que é possível com self.current_method
facilmente encontrado em http://www.ruby-forum.com/topic/75258
fonte
Eu fiz o mesmo. Eu fiz isso no controlador auxiliar, meu código é:
Esses métodos retornarão o contoller atual e o nome da ação. Espero que ajude
fonte
controller_name
, que é um método que retorna o nome do controlador atual, em outro método que apenas chamacontroller_name
? Por que não ligarcontroller_name
e terminar com isso?