3

我正在尝试实现一个 HomePresenter 以在我的 Pages 控制器的 home 操作中使用:

# 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 在命名约定和目录结构方面几乎与这个模型相同,但它们都没有给出这个错误。

在这里找到了一个类似但未答复的帖子:

控制器名称和演示者命名空间之间的名称冲突

有任何想法吗?

4

2 回答 2

3

想通了,在这里回答:

控制器名称和演示者命名空间之间的名称冲突

基本上,改变

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

@presenter = ::Pages::HomePresenter.new(current_user)
于 2011-10-28T17:26:10.130 回答
0

您可能还需要设置自动加载路径以包含该app/presenters文件夹。有关如何执行此操作,请参阅delegate_presenter的文档。

(另外,看看那个宝石 - 它可能会带你去你要去的地方!)

于 2011-11-05T03:41:42.507 回答