У меня есть вопрос по Rails.
Как получить имя действия контроллера внутри действия контроллера?
Например, вместо
def create
logger.info("create")
end
Я хочу написать что-то вроде
def create
logger.info(this_def_name)
end
Какой способ получить this_def_name
?
ruby-on-rails
function
Павел К.
источник
источник
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имя контроллера:
return => 'пользователи'
Название действия:
возврат => «показать»
мне бы:
return => '23'
источник
Этот фрагмент работает для Rails 3
распечатает
источник
Ответ mikej был очень точным и полезным, но я также хотел узнать, как получить имя текущего метода в рельсах.
узнал, что это возможно с self.current_method
легко найти на http://www.ruby-forum.com/topic/75258
источник
Я просто сделал то же самое. Я сделал это в вспомогательном контроллере, мой код:
Эти методы будут возвращать текущий контроллер и имя действия. Надеюсь, поможет
источник
controller_name
, который является методом, который возвращает имя текущего контроллера, в другой метод, который просто вызываетcontroller_name
? Почему бы просто не позвонитьcontroller_name
и не покончить с этим?