неинициализированная константа для HomePresenter - PullRequest
2 голосов
/ 28 октября 2011

Я пытаюсь реализовать HomePresenter для использования внутри действия home моего контроллера Pages:

# app/controllers/pages_controller.rb
class PagesController < ApplicationController
   def home
      @presenter = Pages::HomePresenter.new(current_user)
   end
   ...
end

# app/presenters/pages/home_presenter.rb
module Pages
   class HomePresenter
      def initialize(user)
         @user = user
      end
      ...
   end
end

Мои спецификации докладчика проходят без ошибок, но когда я запускаю сервер и получаю доступ к домашней странице в Chrome, я получаю следующее:

uninitialized constant ActionController::Caching::Pages::HomePresenter

Для двух других моделей в моем приложении я использую IndexPresenters, которые почти идентичны этой в отношении соглашения об именах и структуре каталогов, но ни одна из них не дает этой ошибки.

Нашел похожий, но без ответа пост здесь:

Конфликт имен между именем контроллера и пространством имен докладчика

Есть идеи?

Ответы [ 2 ]

1 голос
/ 28 октября 2011

Разобрался, ответил здесь:

Конфликт имен между именем контроллера и пространством имен докладчика

В основном, изменить

@presenter = Pages::HomePresenter.new(current_user)

до

@presenter = ::Pages::HomePresenter.new(current_user)
0 голосов
/ 05 ноября 2011

Вы также можете указать путь автозагрузки для включения папки app/presenters. Чтобы узнать, как это сделать, см. Документацию для Delegate_presenter .

(Кроме того, проверьте этот драгоценный камень - он может получить вас, куда вы идете!)

...