HomePresenter的未初始化常数 [英] uninitialized constant for HomePresenter

查看:150
本文介绍了HomePresenter的未初始化常数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 #app / 

controllers / pages_controller.rb
class PagesController< ApplicationController
def home
@presenter = Pages :: HomePresenter.new(current_user)
end
...
end

#app /presenters/pages/home_presenter.rb
模块页面
class HomePresenter
def initialize(user)
@user = user
end
...
end
end

我的演示者规范传递没有错误,但是当我运行服务器并访问Chrome中的主页,我得到:

 未初始化的常量ActionController :: Caching :: Pages :: HomePresenter 

对于我的应用程序中的另外两个模型,我使用IndexPresenters,



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



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



有任何想法吗?

解决方案



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

基本上,更改

  @presenter = Pages :: HomePresenter.new current_user)

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


I'm trying to implement a HomePresenter to be used inside the home action of my Pages controller:

# 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

My presenter specs pass without errors, but when I run the server and access the home page in Chrome, I get this:

uninitialized constant ActionController::Caching::Pages::HomePresenter

For two other models in my app, I'm using IndexPresenters that are almost identical to this one with regard to naming convention and directory structure, but neither of them gives this error.

Found a similar, yet unanswered post here:

Name conflict between controller name and presenter namespace

Any ideas?

解决方案

Figured this out, answered it here:

Name conflict between controller name and presenter namespace

Basically, change

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

to

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

这篇关于HomePresenter的未初始化常数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆