Как получить доступ к декоратору Admin::ExampleDecorator в контроллере?
Я использовал 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.
Я не понимаю, почему эта ошибка приходит.
Как пространства имен работают в Decorator?
1 ответ
Я не совсем уверен в вашем вопросе, но так как вы используете decorated_assigned :example
Вы создаете вспомогательный метод. См. Файл Draper.
Вам не нужно будет явно вызывать декоратор.
def edit
@example = Example.last
end
Это означает, что по вашему мнению вы будете звонить example
вместо @example
получить декорированную версию. Это вызовет ваш вспомогательный метод и вернет оформленную версию.