2010-08-23 40 views
43

我想知道爲什麼有人應該在控制器內使用helper_method來創建一個幫助器方法,而不是創建幫助器文件中的「常規」方法。那有什麼優點和缺點?控制器helper_method

回答

81

helper_method當功能是控制器和視圖之間使用的功能時很有用。一個很好的例子就像current_user

如果該方法更多地處理控制器邏輯而不是格式化,那麼它屬於控制器。類似於current_user將會在所有控制器之間共享,因此應該在ApplicationController中定義。

真正的「幫手」方法處理視圖並處理諸如格式化和模板邏輯之類的事情。這些在控制器中很少需要,它們屬於app/helper下的模塊。您可以在需要時將這些內容包含在控制器中,但最終會爲您的控制器提供整個模塊的視圖幫助器方法。