控制器helper_method
我想知道为什么有人应该使用控制器内的helper_method来创build一个帮助器方法,而不是创build“帮助器”文件中的“正常”的方式。 那有什么优点和缺点?
当function是控制器和视图之间使用的function时, helper_method
是有用的。 一个很好的例子就是current_user
。
如果该方法处理更多的控制器逻辑,而不是格式化,那么它属于控制器。 像current_user
东西将在所有的控制器之间共享,所以它应该在ApplicationController
定义。
真正的“帮手”方法处理视图和处理格式和模板逻辑的东西。 这些在控制器中是很less需要的,它们属于app / helper下的模块。 你可以在需要的时候在控制器中包含这些信息,但是最终你的控制器可以使用整个模块的视图帮助器方法。
在控制器和视图之间共享方法你有几个select:
- 使用view_context http://apidock.com/rails/AbstractController/Rendering/view_context
- 在控制器中定义它并通过helper_method类的方法在视图中提供http://apidock.com/rails/ActionController/Helpers/ClassMethods/helper_method
- 在共享模块中定义它并包含/扩展