0

我已经使用 draper gem 来生成装饰器,并且我已经创建了一个装饰器。我在装饰器文件夹中使用了命名空间,并尝试使用 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.

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

命名空间在装饰器中是如何工作的?

4

1 回答 1

0

我不完全确定您的问题,但由于您正在使用decorated_assigned :example您正在创建一个辅助方法。请参阅Draper 自述文件

您不需要显式调用装饰器。

def edit
  @example = Example.last
end

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

于 2015-03-10T12:53:59.937 回答