2017-09-14 9 views
1

抽象で​​あると思われるコントローラでrescue_fromを使用しようとしています。私はそこに特定のカスタムエラーをキャッチする必要があるので、rescue_fromのメソッドへの呼び出しで文字列を評価しようとしています。ここで がコードされています。私はルーティングエラーコントローラの定義されていないメソッド:クラス

Routing Error 
undefined method `class_name' for Restream::MultipleDestinationsServicesController:Class Did you mean? class_eval``` 

class Restream::MultipleDestinationsServicesController < Restream::BaseController 
    rescue_from "Exceptions::#{self.class_name}Error", 
    with: :show_error 
    def self.class_name; controller_name.classify.constantize; end 
end 

そのように取得しています私は明らかに間違ってここに何が起こっているか理解していない、ので、それは私が間違っているのかを理解することはできません。

答えて

1

Rubyでは、クラス内に書くのは、1つずつ実行される命令です。 "Exceptions::#{self.class_name}Error"がすぐに実行されますが、self.class_nameはまだ定義されていません。したがって、順序を変更してください:

def self.class_name 
    controller_name.classify.constantize 
end 

rescue_from "Exceptions::#{self.class_name}Error", with: :show_error 
+0

私は午前中に試してみましょう+ 3GMT;)そしてその前に:あなたはそれをやろうとしたのでしょうか、 – Ngoral

+0

私はちょうど抽象的なコントローラを構築しています。なぜなら、いくつかのtgenがあれば、まったく同じように動作する必要があるからです – Ngoral

関連する問題