无法从全局帮助程序加载装饰器

时间:2014-03-07 12:15:24

标签: ruby-on-rails

我有一个应用程序助手来加载装饰器(基于关于演示者的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 个答案:

答案 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

你错过了字符串插值的#