2017-09-14 105 views
1

我想在我的控制器中使用rescue_from,該控制器應該是抽象的。我需要在那裏捕獲某些自定義錯誤,所以我試圖通過調用rescue_from中的方法來評估一個字符串。 下面是代碼:路由錯誤控制器的未定義方法:類

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 

這樣,我得到

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

我不清楚明白是怎麼回事錯在這裏,所以不能明白我在做什麼錯。

回答

1

在Ruby中,你在類中寫的是一個一個地運行的指令。立即執行"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 
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

相關問題