我陷入了一个奇怪的设计问题,
当我尝试在另一个具有多个类并希望访问应用程序帮助方法的帮助程序中调用应用程序帮助程序方法时,我遇到了问题。
什么是更好的方法?
关于我能做些什么的想法?
我的代码看起来像这样,
## app/helpers/application_helper.rb
module ApplicationHelper
def my_name
"stackoverflow"
end
end
另一个有子类的助手
## app/helpers/my_helper.rb
module MyHelper
class MyTestclass
def want_myname
my_name ## giving undefined method-- how can i call myname method here?
end
end
end
undefined method `myname' for MyHelper::MyTestclass
答案 0 :(得分:1)
以下是您的问题以及如何使用模块的简要说明: 要1.通过简单地说:
创建/打开模块module MyModule
def first_module_method
end
end
To 2. lib文件夹。如果要在lib文件夹中组织模块,可以将它们自己放入模块中。例如,如果您想要一个子文件夹super_modules,您的模块将定义如下:
module SuperModules
module MyModule
def first_module_method
end
end
end
至3./5。将模块包含在类中时,您只需调用模块方法,就好像它们是在类中定义的那样:
class MyClass
include MyModule
def some_method
first_module_method #calls module method
end
end
To 4.首先,确保您的应用程序的每个类都真正需要您的模块。如果不是这样,只将它包含在需要的地方是有意义的,这样就不会使那些不需要它的类膨胀。如果你真的想在任何地方使用该模块,请在应用程序中查看类的类层次结构。你想要所有型号的模块吗?你可以打开ActiveRecord :: Base并在那里添加你的模块。