Ответы:
Rails 2.X :@controller.action_name
Рельсы 3.1.x : controller.action_name
,action_name
Rails 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
и не покончить с этим?