Mam pytanie dotyczące Railsów.
Jak uzyskać nazwę akcji kontrolera wewnątrz akcji kontrolera?
Na przykład zamiast
def create
logger.info("create")
end
Chcę napisać coś takiego
def create
logger.info(this_def_name)
end
Jaki jest sposób na zdobycie this_def_name
?
ruby-on-rails
function
Pavel K.
źródło
źródło
before_filter
z blokiem, zróbbefore_filter { |controller| ... }
. stackoverflow.com/questions/2669663/…action_name
działa w Railsach 3.2.13 icontroller.action_name
nie.W konkretnym przypadku akcji Railsów (w przeciwieństwie do ogólnego przypadku pobierania aktualnej nazwy metody) możesz użyć
params[:action]
Alternatywnie możesz przyjrzeć się dostosowaniu formatu dziennika Railsów tak, aby nazwa akcji / metody była zawarta w formacie, a nie w komunikacie dziennika.
źródło
action_name == 'new'
(bez prefiksu) nadal działa dla mnie w Railsach 3.2nazwa kontrolera:
return => 'użytkownicy'
nazwa akcji:
return => 'pokaż'
ID:
return => „23”
źródło
Ten fragment działa dla Rails 3
wydrukuje
źródło
Odpowiedź mikeja była bardzo dokładna i pomocna, ale chciałem też wiedzieć, jak uzyskać aktualną nazwę metody w railsach.
dowiedziałem się, że jest to możliwe dzięki self.current_method
łatwo znaleźć na http://www.ruby-forum.com/topic/75258
źródło
Po prostu zrobiłem to samo. Zrobiłem to w kontrolerze pomocniczym, mój kod to:
Te metody zwrócą bieżącą nazwę kontrolera i akcji. Mam nadzieję, że to pomoże
źródło
controller_name
, czyli metodę zwracającą nazwę bieżącego kontrolera, inną metodą, która po prostu wywołujecontroller_name
? Dlaczego po prostu nie zadzwonićcontroller_name
i skończyć z tym?