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

Ruby on rails 控制器名称和演示者命名空间之间的名称冲突,ruby-on-rails,controller,presenter,Ruby On Rails,Controller,Presenter,我使用的是presenter模式,似乎遇到了不一致的类命名冲突。我有一个带有homepage方法的pages控制器,我希望该方法使用pages::HomepagePresenter类,但最终出现错误: uninitialized constant ActionController::Caching::Pages::HomepagePresenter # ./app/controllers/pages_controller.rb:3:in `homepage' # ./spec

我使用的是presenter模式,似乎遇到了不一致的类命名冲突。我有一个带有homepage方法的pages控制器,我希望该方法使用pages::HomepagePresenter类,但最终出现错误:

uninitialized constant ActionController::Caching::Pages::HomepagePresenter
     # ./app/controllers/pages_controller.rb:3:in `homepage'
     # ./spec/requests/pages_spec.rb:14:in `block (5 levels) in <top (required)>'
我刚刚发布了一篇文章,然后想出了解决方案:

页面模块已在ActionController::Caching中定义。当您使用常量页面时,rails猜测您引用的是这个名称空间,但在其中找不到HomepagePresenter,因此它会抛出一个错误

通过显式指定顶级名称空间来修复它,方法是在名称空间前面加上前缀:,如下所示:

@presenter = ::Pages::HomepagePresenter.new(current_user)
我刚刚发布了一篇文章,然后想出了解决方案:

页面模块已在ActionController::Caching中定义。当您使用常量页面时,rails猜测您引用的是这个名称空间,但在其中找不到HomepagePresenter,因此它会抛出一个错误

通过显式指定顶级名称空间来修复它,方法是在名称空间前面加上前缀:,如下所示:

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