HomePresenter的未初始化常量

时间:2011-10-28 05:59:47

标签: ruby-on-rails controller presenter

我正在尝试实现一个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

有什么想法吗?

2 个答案:

答案 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的文档。

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