Как получить доступ к декоратору 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 получить декорированную версию. Это вызовет ваш вспомогательный метод и вернет оформленную версию.

Другие вопросы по тегам