Rails - имя действия контроллера в строку

Я понимаю, что компилятору нужно во время компиляции знать во время компиляции, но почему не Foo.BA_ constant?

blockquote>

Пока они постоянны с точки зрения любого кода, который выполняется после того, как поля были инициализированы, они не являются константой времени компиляции в смысле, требуемом JLS; см. §15.28 Константные выражения для определения того, что требуется для постоянного выражения. Это означает §4.12.4 Конечные переменные , которые определяют «постоянную переменную» следующим образом:

Мы называем переменную примитивного типа или типа String, то есть окончательный и инициализированный с помощью выражения константы времени компиляции (§15.28) постоянной переменной. Независимо от того, является ли переменная постоянной или нет, она может иметь последствия для инициализации класса (§12.4.1), бинарной совместимости (§13.1, §13.4.9) и определенного назначения (§16).

blockquote >

В вашем примере переменные Foo.BA * не имеют инициализаторов и, следовательно, не квалифицируются как «постоянные переменные». Исправить это просто; измените объявления переменных Foo.BA * на наличие инициализаторов, которые являются постоянными выражениями времени компиляции.

147
задан februaryInk 25 May 2015 в 22:47
поделиться

2 ответа

В конкретном случае действия Rails (в отличие от общего случая получения имени текущего метода) вы можете использовать params [: action]

В качестве альтернативы вы можете захотеть чтобы изучить возможность настройки формата журнала Rails, чтобы имя действия / метода было включено в формат, а не в ваше сообщение журнала.

33
ответ дан 23 November 2019 в 21:49
поделиться

Ответ mikej был очень точным и полезным, но я также хотел знать, как получить текущее имя метода в рельсах.

выяснил, что это возможно с помощью self.current_method

легко найти на http://www.ruby-forum.com/topic/75258

2
ответ дан 23 November 2019 в 21:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: