我有关于命名约定和自动加载的问题。Rails应用程序中/ app /下的自定义目录命名约定?
我想有一个主持人ItemPresenter在app/presenters/items/item_presenter.rb
我的理解是,我可以创建该文件是这样的:
module Items
class ItemPresenter
end
end
但我做到这一点,并尝试当调用主持人为Items::ItemPresenter
我得到uninitialized constant
错误:
uninitialized constant Items::ItemPresenter
def show
@presenter = Items::ItemPresenter.new # this is the highlighted line of my Controller
编辑:Rails, Custom Folders and Namespaces不重复的,因为它是关于DIF ferent目录结构jobs/smth.rb
,而我想实现presenters/items/item_presenter.rb
(1倍以上的水平)
EDIT2:无论从铁轨控制台的工作原理:NameError: uninitialized constant Items::ItemPresenter
EDIT2:我试图做这样的建议:
module Presenters
module Items
class ItemPresenter
def test
"hello"
end
end
end
end
和@presenter = Presenters::Items::ItemPresenter.new
在我的控制器中:
uninitialized constant TrialsController::Presenters
看来Rails没有看到di所有的教区。
EDIT3:创建一个示例应用程序https://github.com/dontlookforme/test_app
EDIT4:想通了。我搞砸了文件名(请参阅我发布的答案)
你可以发布你得到的确切的错误消息吗?我在一个虚拟应用程序中创建了这个功能,并且可以在我的导航控制台中调用'Items :: ItemPresenter' – sixty4bit
您是否需要一个模块演示者包含模块项目和类ItemPresenter? –
@ sixty4bit ugh。即使在我的rails控制台中也不起作用:(更新了问题 – Anton