2010-05-21 31 views
5

我有這段代碼片段可以爲POST生成一個簽名。它的細節並不重要,但我想知道的是:因爲它不是一個與模型相關的代碼塊,它確實可以用於任何地方:控制器,模型,視圖助手;甚至在視圖中。所以我不確定在哪裏,甚至更大的問題,如何激活使用它,一旦我把它放在某個位置。將代碼片段放在Rails中的位置?

這些「要求」陳述是關於什麼?您可以通過當前正在處理的文件中的「require」語句獲取某些功能?

只是讓我們通過一個實例說說,說,我的一小段代碼,它多維數據:

def cube_it(num) 
    num**3 
end 

我知道,我會在整個應用程序中不同的地方使用它,所以我應該把它放在哪裏?當我確實需要使用它時,我該如何「召喚」它?

謝謝

回答

2

Rails自動加載第一次使用的模塊和類。你可以將你的函數放入一個模塊(或類)中,並將該文件放入應用程序的lib目錄中。 require語句經常不在Rails應用程序中使用。

+0

感謝您的回覆亞歷克斯---說我做了一個文件調用maths.rb,所以我把它放在「lib」目錄?之後我可以從任何地方調用cube_it? – 2010-05-21 05:05:09

+0

@Nik:是的,只是把它放在lib目錄中。如果將cube_it放入模塊中,模塊將自動加載。雖然我沒有嘗試過使用普通函數。 – 2010-05-21 05:15:51

+0

好的,我做了一個文件lib/maths.rb。在它,它很簡單: 類數學 高清cube_it(N) ñ** 3 結束 結束 但是當我加載腳本/控制檯,並試圖cube_it(3),它說沒有方法錯誤。 我試圖 模塊數學 DEF cube_it(N) Ñ** 3 端 端 和沒有運氣。 ----只需一秒鐘,在控制檯中,我做了一個「包含數學」,然後它就起作用了!但你提到它被自動加載? – 2010-05-21 05:30:53

4

我建議把你的代碼放入名爲Math的模塊中lib/math.rb

math.rb
module Math 
    class << self 
    def cube_it(num) 
     num*3 
    end 
    end 
end 

你不需要任何要求與這個聲明(軌道會爲你),你可以輕鬆地與Math.cube_it("Hi")調用它。

還有其他一些向rails應用程序添加代碼的方法,但這是最好的方法。

+0

我明白了。謝謝塞繆爾 – 2010-05-22 18:59:44

+0

這似乎並沒有爲我工作。當我使用我自己的模塊時,我得到'未初始化的常量ModuleName'和確切的math.rb文件,以及我爲'Math.cube_it(3)'得到的東西'響應:'未定義的方法'cube_it'用於Math:Module' – Mikey 2012-11-27 00:51:16

相關問題