我想知道为什么有人应该在控制器中使用helper_method创建一个帮助器方法,而不是创建辅助文件中的“正常”方式。它的优点和缺点是什么?
答案 0 :(得分:82)
helper_method
非常有用。一个很好的例子就像current_user
。
如果该方法更多地处理控制器逻辑而不是格式化,则它属于控制器。像current_user
这样的东西将在所有控制器之间共享,因此应该在ApplicationController
中定义。
真正的“帮助”方法处理视图并处理格式化和模板逻辑之类的事情。控制器中很少需要它们,它们属于app / helpers下的自己的模块。您可以在需要时将它们包含在控制器中,但最终会得到控制器可用的整个模块视图辅助方法。
答案 1 :(得分:14)
要在控制器和视图之间共享方法,您有以下几种选择: