2010-03-06 83 views
1

当我的项目成长时,我需要编写一些方法,但application_controller的私有方法和帮助程序没有提供足够的空间来存储所有扩展。帮助程序,方法和类组织

所以我看了自定义的类和方法,它们存储在/ lib文件夹中。

,但我仍然有一些问题,这些问题我解决不了:

- 当我应该使用“类< <自我”?我有一个类,来计算两个数组之间的差异,然后返回具有该数字中间值的新数组。我用这样的代码:

x = MyClass.new 
x.calculate(array1, array2) 

然后,我已经把我的类的方法分为‘类< <自我;末’使用类不用初始化。它是正确的解决方案?

-什么时候应该使用自定义模块?是否总是需要“包含”或“要求”他们?请告诉我你的项目中的模块,你什么时候使用它们?

- 如何在控制器中调用helper的方法?我想用在ajax响应中。例如,我使用助手方法'users_for_output',如果有Ajax调用,我的应用程序应该只渲染用户作为文本,以便在之后用javascript处理它。

回答

1

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