Ich habe eine Rails-Frage.
Wie erhalte ich den Namen einer Controller-Aktion innerhalb der Controller-Aktion?
Zum Beispiel anstelle von
def create
logger.info("create")
end
Ich möchte so etwas schreiben
def create
logger.info(this_def_name)
end
Was ist ein Weg zu bekommen this_def_name
?
ruby-on-rails
function
Pavel K.
quelle
quelle
before_filter
mit einem Block verwenden möchten , tun Sie diesbefore_filter { |controller| ... }
. stackoverflow.com/questions/2669663/…action_name
Ihrer Information , funktioniert in Rails 3.2.13 undcontroller.action_name
nicht.Im speziellen Fall einer Rails-Aktion (im Gegensatz zum allgemeinen Fall, dass der aktuelle Methodenname abgerufen wird) können Sie verwenden
params[:action]
Alternativ können Sie das Rails-Protokollformat so anpassen, dass der Aktions- / Methodenname im Format enthalten ist und nicht in Ihrer Protokollnachricht enthalten ist.
quelle
action_name == 'new'
(nicht fixiert) funktioniert immer noch für mich in Rails 3.2Controller-Name:
return => 'Benutzer'
Aktionsname:
return => 'show'
Ich würde:
return => '23'
quelle
Dieses Snippet funktioniert für Rails 3
wird gedruckt
quelle
mikejs antwort war sehr präzise und hilfreich, aber ich wollte auch wissen, wie man den aktuellen methodennamen in schienen erhält.
fand heraus, dass es mit self.current_method möglich ist
leicht zu finden unter http://www.ruby-forum.com/topic/75258
quelle
Ich habe einfach das Gleiche getan. Ich habe es in Helper Controller gemacht, mein Code ist:
Diese Methoden geben den aktuellen Controller und den aktuellen Aktionsnamen zurück. Ich hoffe es hilft
quelle
controller_name
, eine Methode, die den Namen des aktuellen Controllers zurückgibt, in eine andere Methode, die nur aufruftcontroller_name
? Warum nicht einfach anrufencontroller_name
und fertig sein?