帮助程序,方法和类组织
问题描述:
当我的项目成长时,我需要编写一些方法,但application_controller的私有方法和帮助程序没有提供足够的空间来存储所有扩展。帮助程序,方法和类组织
所以我看了自定义的类和方法,它们存储在/ lib文件夹中。
,但我仍然有一些问题,这些问题我解决不了:
- 当我应该使用“类< <自我”?我有一个类,来计算两个数组之间的差异,然后返回具有该数字中间值的新数组。我用这样的代码:
x = MyClass.new
x.calculate(array1, array2)
然后,我已经把我的类的方法分为‘类< <自我;末’使用类不用初始化。它是正确的解决方案?
-什么时候应该使用自定义模块?是否总是需要“包含”或“要求”他们?请告诉我你的项目中的模块,你什么时候使用它们?
- 如何在控制器中调用helper的方法?我想用在ajax响应中。例如,我使用助手方法'users_for_output',如果有Ajax调用,我的应用程序应该只渲染用户作为文本,以便在之后用javascript处理它。
答
1)你不必实例化类来调用静态方法,即
MyUtil.do_something
比。
MyUtil.new.do_something
在我的项目中,我保持静态的这种方法。
2)当想要跨类共享一组功能时,可以使用模块。阅读this mixin vs继承讨论。您将了解何时使用模块。
2.1)included
方法用于初始化模块变量。如果你没有任何初始化,你不需要使用它。
3)如果您想要将控制器方法公开为帮助方法,请在您的ApplicationController类中使用helper_method
调用。
class ApplicationController < ActionController::Base
helper_method :user_for_output
end