Відповіді:
Рейки 2.X :@controller.action_name
Рейки 3.1.x : controller.action_name
,action_name
Рейки 4.X :action_name
before_filter
блоці з блоком, зробіть це before_filter { |controller| ... }
. stackoverflow.com/questions/2669663/…
action_name
працює в Rails 3.2.13, і controller.action_name
ні.
У конкретному випадку дії Rails (на відміну від загального випадку отримання поточної назви методу) ви можете використовувати params[:action]
Крім того, ви можете заглянути в налаштування формату журналу Rails, щоб ім’я дії / методу було включене у формат, а не у ваше повідомлення журналу.
action_name == 'new'
(нефіксований) досі працює для мене в Rails 3.2
Цей фрагмент працює для Rails 3
class ReportsController < ApplicationController
def summary
logger.debug self.class.to_s + "." + self.action_name
end
end
буде надруковано
. . .
ReportsController.summary
. . .
Відповідь mikej була дуже точною і корисною, але те, що я також хотів знати, - як отримати поточну назву методу в рейках.
з'ясували, що це можливо за допомогою self.current_method
легко знайти на сайті http://www.ruby-forum.com/topic/75258
Я просто зробив те саме. Я це робив у помічнику контролера, мій код:
def get_controller_name
controller_name
end
def get_action_name
action_name
end
Ці методи повернуть назву поточного контролера та дії. Сподіваюся, це допомагає
controller_name
- метод, який повертає ім'я поточного контролера, в інший метод, який просто викликає controller_name
? Чому б просто не зателефонувати controller_name
і зробити це з ним?