我正在尝试实现一个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与命名约定和目录结构几乎完全相同,但它们都没有出现此错误。
在这里找到类似但尚未回答的帖子:
Name conflict between controller name and presenter namespace
有什么想法吗?
答案 0 :(得分:1)
想出来,在这里回答:
Name conflict between controller name and presenter namespace
基本上,改变
@presenter = Pages::HomePresenter.new(current_user)
到
@presenter = ::Pages::HomePresenter.new(current_user)
答案 1 :(得分:0)
您还可能希望将自动加载路径设置为包含app/presenters
文件夹。有关如何执行此操作,请参阅delegate_presenter的文档。
(另外,看看那个宝石 - 它可能会让你到达目的地!)