回答:
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で可能であることがわかりました
私は同じことをしました。私はヘルパーコントローラーでそれをしました、私のコードは:
def get_controller_name
controller_name
end
def get_action_name
action_name
end
これらのメソッドは、現在のコントローラーとアクション名を返します。それが役に立てば幸い
controller_name
現在のコントローラーの名前を返すメソッドであるwrapを、呼び出す だけの別のメソッドに含めるのはcontroller_name
なぜですか?ただ電話controller_name
してそれで終わらせないのはなぜですか?