2014-03-07 70 views
0

我有一個應用程序助手來加載裝飾器(基於RailsCast關於演示者)。 然而,當我嘗試加載網頁,我得到這個錯誤:無法從全局幫助程序加載裝飾器

wrong constant name {object.class}Decorator 

這是輔助方法:

module ApplicationHelper 
    def decorate(object, klass = nil) 
    klass ||= "{object.class}Decorator".constantize 
    decorator = klass.new(object, self) 
    yield decorator if block_given? 
    decorator 
    end 
end 

我檢查和object充滿User類,當我改變行到這一點,工作正常:

klass ||= UserDecorator 

所以我想這可能是因爲constantize方法可以不涉及UserDecoratorapps/decorators/user_decorator.rb

回答

2

你錯過了#

klass ||= "#{object.class}Decorator".constantize 
+0

Djeez,那很愚蠢:-) – John

1

試試這個:

module ApplicationHelper 
    def decorate(object, klass = nil) 
    klass ||= "#{object.class}Decorator".constantize 
    decorator = klass.new(object, self) 
    yield decorator if block_given? 
    decorator 
    end 
end 

你缺少#的字符串插值。