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 – 它可能会让你到达目的地!)