如何在控制器中访问装饰器Admin :: ExampleDecorator?

时间:2014-12-08 11:50:25

标签: ruby-on-rails-4.1 draper

我使用了draper gem来生成装饰器,我已经装饰了装饰器。我在decorator文件夹中使用了命名空间,我尝试使用decorates_assigned访问特定控制器中的那个装饰器。

例如     我的文件夹结构是decorators / admin / example_decorator.rb

我在控制器中添加了以下行:

decorates_assigned :example 

在行动中我写了

def edit
  @example = Admin::ExampleDecorator.new(Example.last)
end

但我收到以下错误:

Could not infer a source for Admin::ExampleDecorator.

我不明白为什么会出现这个错误。

命名空间如何在Decorator中起作用?

1 个答案:

答案 0 :(得分:0)

我不完全确定你的问题,但是因为你正在使用decorated_assigned :example,所以你正在创建一个帮助方法。请参阅Draper readme

你不需要明确地调用装饰器。

def edit
  @example = Example.last
end

这意味着在您的视图中,您将调用example而不是@example来获取装饰版本。这将调用您的帮助方法并返回修饰版本。