嵌套控制器中的统一常量错误

时间:2019-02-11 17:23:04

标签: ruby-on-rails

我有这个控制器:

class V2::OffersController > ApplicationController

在此文件中:app/controllers/v2/offers_controller.rb

在该控制器中,我试图引用此类:

module Presenters
    class Offers

在此文件中:app/presenters/offers.rb

我正在像这样实例化该类:

Presenters::Offers.new()

如果我将config.eager_load设置为true,则一切正常,但仅在第一次尝试时加载,之后我仍然收到此错误:

NameError (uninitialized constant V2::OffersController::Presenters)

我在Ruby 2.5.0上使用Rails 5.1.6.1

1 个答案:

答案 0 :(得分:3)

文件multipanelfigure的类定义应为:

app/presenters/offers.rb

不是

class Offers
end

module Presenters class Offers end end 下的第一级(在这种情况下为app)出于组织目的而存在,不被视为模块。如果要使用:

presenters

然后该文件将为module Presenters class Offers end end

我个人会做类似的事情:

app/presenters/presenters/offers

将在class OffersPresenter end

中定义