我使用了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中起作用?
答案 0 :(得分:0)
我不完全确定你的问题,但是因为你正在使用decorated_assigned :example
,所以你正在创建一个帮助方法。请参阅Draper readme。
你不需要明确地调用装饰器。
def edit
@example = Example.last
end
这意味着在您的视图中,您将调用example
而不是@example
来获取装饰版本。这将调用您的帮助方法并返回修饰版本。