我有这个控制器:
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
答案 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