HomePresenter的未初始化常量

我正在尝试实现一个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与命名约定和目录结构几乎完全相同,但它们都没有出现此错误。

在这里找到一个类似但尚未回答的post:

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

有任何想法吗?

想出这个,在这里回答:

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

基本上,改变

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

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

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

(另外,看看那个gem – 它可能会让你到达目的地!)