似乎app/helper/foo.rb中的那些助手可以在View中使用,但不能在Controller中使用?在Rails中,使用Controller/vs中的app/helpers/foo.rb方法的任何方式?
在某些情況下,不同的控制器可能需要使用相同的方法,但只傳入不同的參數,所以在這種情況下,在控制器中使用輔助器是否合理?
似乎app/helper/foo.rb中的那些助手可以在View中使用,但不能在Controller中使用?在Rails中,使用Controller/vs中的app/helpers/foo.rb方法的任何方式?
在某些情況下,不同的控制器可能需要使用相同的方法,但只傳入不同的參數,所以在這種情況下,在控制器中使用輔助器是否合理?
這可能是有道理的,但它不會那樣工作。 (如果有人知道如何做到這一點,隨時張貼)
你可以把常見的助手在ApplicationController
,他們將可以從您的應用程序的任何控制器訪問。
在控制器之間重用代碼有兩種主要方法。
您可以創建ApplicationController
的子類,該子類具有通用代碼,然後您的控制器想要共享從新控制器類繼承的代碼。 (或者只需要將代碼添加到ApplicationController
本身,如果它需要被所有控制器共享)。
或者,您可以創建自己的模塊(這是所有幫助器本質上的),並將它們包含到您想要的控制器中使用代碼。
由於助手只是模塊,你可以在你的控制器中包含一個助手,但助手比控制器更適合視圖層,所以它很少是控制器之間共享代碼的地方。
如上所述,您可以將通用助手放在ApplicationController或子類中。我想補充一點,讓他們提供給的意見,以及,你把在類的頂部:
helper_method :foo
林嗨,蒂姆說,你可以把它們放在控制器和定義爲輔助方法例如:ApplicationController的< ActionController :: Base helper_method:foo end – sameera207 2010-09-16 06:03:54