我用一個函數做了一個簡單的幫助,並將其放在相關的controller_helper中,我注意到該函數在整個應用程序視圖中都是有效的。rails幫助者位置
這是爲什麼?這個幫手不應該只對他的控制者有效嗎?
我用一個函數做了一個簡單的幫助,並將其放在相關的controller_helper中,我注意到該函數在整個應用程序視圖中都是有效的。rails幫助者位置
這是爲什麼?這個幫手不應該只對他的控制者有效嗎?
的過程如下:
如果你在屬於控制器foo
一個視圖,你調用一個叫my_helper
幫手:
如果foo
的幫手定義,它的執行從這裏開始
如果在foo
的幫助程序中沒有定義,但在另一個幫助程序中定義,例如bar
,則從此處執行
如果沒有在foo
也沒有在任何bar
,它在application_helper
檢查。如果這裏不存在,則會出現錯誤。
這是有道理的,但它不是完整的故事。我有一個控制器MainController
和控制器AlsoController
,並在每個輔助模塊中定義了一個名字相同的幫助器wherefrom
,即MainHelper
和AlsoHelper
。但是,如果我嘗試在also
視圖中使用wherefrom
,它將使用MainHelper
中定義的幫助程序而不是AlsoHelper
中的幫助程序。
(這是什麼意思?)...看起來很奇怪,首選的方法將是一個不同的幫手。主控制器有什麼魔力? – mwfearnley 2015-09-11 11:23:45