2011-05-08 80 views
1

我用一個函數做了一個簡單的幫助,並將其放在相關的controller_helper中,我注意到該函數在整個應用程序視圖中都是有效的。rails幫助者位置

這是爲什麼?這個幫手不應該只對他的控制者有效嗎?

回答

2

的過程如下:

如果你在屬於控制器foo一個視圖,你調用一個叫my_helper幫手:

  • 如果foo的幫手定義,它的執行從這裏開始

  • 如果在foo的幫助程序中沒有定義,但在另一個幫助程序中定義,例如bar,則從此處執行

  • 如果沒有在foo也沒有在任何bar,它在application_helper檢查。如果這裏不存在,則會出現錯誤。

0

這是有道理的,但它不是完整的故事。我有一個控制器MainController和控制器AlsoController,並在每個輔助模塊中定義了一個名字相同的幫助器wherefrom,即MainHelperAlsoHelper。但是,如果我嘗試在also視圖中使用wherefrom,它將使用MainHelper中定義的幫助程序而不是AlsoHelper中的幫助程序。

+0

(這是什麼意思?)...看起來很奇怪,首選的方法將是一個不同的幫手。主控制器有什麼魔力? – mwfearnley 2015-09-11 11:23:45