我有一个应用程序助手来加载装饰器(基于关于演示者的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
方法无法将UserDecorator
与apps/decorators/user_decorator.rb
联系起来?
答案 0 :(得分:2)
你错过了#
klass ||= "#{object.class}Decorator".constantize
答案 1 :(得分: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
你错过了字符串插值的#
。