在Rails中命名一个类的快捷方式

时间:2018-05-16 10:10:44

标签: ruby-on-rails

在Rails中,如何在不在任何地方定义MyModule的情况下使用以下代码行命名控制器类?

class MyModule::MyClass < ApplicationController

我知道它会在Ruby中引发一个NameError(因为你正在调用一个不存在的模块),但由于某些原因它在Rails中起作用。什么是隐藏的机制,使这个&#34;捷径&#34;命名空间可能吗?

2 个答案:

答案 0 :(得分:0)

它被称为autoloading。从常量名称,Rails猜测其定义可能的路径名,并尝试加载它。

特别是,您的MyModule之类的命名空间应与目录名相对应,在该目录名中,预期存在定义为MyClass的文件。

答案 1 :(得分:0)

看起来你在这里制作一个控制器,Rails非常讲究控制器的文件命名约定。它必须在app/controllers/my_module/my_class_controller.rb

如果这不起作用,你也可以在线定义模块,如果它也在别处定义也没关系。

module MyModule
  class MyClassController < ApplicationController