J'ai une question Rails.
Comment puis-je obtenir le nom d'une action de contrôleur dans l'action de contrôleur?
Par exemple, au lieu de
def create
logger.info("create")
end
Je veux écrire quelque chose comme
def create
logger.info(this_def_name)
end
Quel est le moyen d’obtenir this_def_name
?
ruby-on-rails
function
Pavel K.
la source
la source
before_filter
avec un bloc, faitesbefore_filter { |controller| ... }
. stackoverflow.com/questions/2669663/…action_name
fonctionne dans Rails 3.2.13, etcontroller.action_name
ne le fait pas.Dans le cas spécifique d'une action Rails (par opposition au cas général de l'obtention du nom de la méthode actuelle), vous pouvez utiliser
params[:action]
Vous pouvez également envisager de personnaliser le format du journal Rails afin que le nom de l'action / méthode soit inclus par le format plutôt que dans votre message de journal.
la source
action_name == 'new'
(sans préfixe) fonctionne toujours pour moi dans Rails 3.2nom du contrôleur:
return => 'utilisateurs'
nom de l'action:
return => 'afficher'
identifiant:
return => '23'
la source
Cet extrait fonctionne pour Rails 3
va imprimer
la source
La réponse de mikej était très précise et utile, mais la chose que je voulais aussi savoir était comment obtenir le nom de la méthode actuelle dans les rails.
découvert que c'est possible avec self.current_method
facilement trouvé sur http://www.ruby-forum.com/topic/75258
la source
J'ai juste fait la même chose. Je l'ai fait dans le contrôleur d'assistance, mon code est:
Ces méthodes renverront le contrôleur actuel et le nom de l'action. J'espère que ça aide
la source
controller_name
, qui est une méthode qui retourne le nom du contrôleur actuel, dans une autre méthode qui appelle simplementcontroller_name
? Pourquoi ne pas simplement appelercontroller_name
et en finir?