2010-03-06 112 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