helper和helper_method做了什么?

时间:2010-10-21 22:55:04

标签: ruby-on-rails helper

helper_method很简单:它使部分或全部控制器的方法可供视图使用。

什么是helper?是否相反,即它将辅助方法导入文件或模块? (也许名称helperhelper_method是相似的。他们可能宁可是share_methods_with_viewimport_methods_from_view

reference

1 个答案:

答案 0 :(得分:278)

方法helper_method是显式共享控制器中定义的一些方法,使它们可用于视图。这用于您需要从控制器和帮助器/视图访问的任何方法(标准辅助方法在控制器中不可用)。例如常见用例:

#application_controller.rb
def current_user
  @current_user ||= User.find_by_id!(session[:user_id])
end
helper_method :current_user
另一方面,helper方法用于将整个帮助程序导入控制器提供的视图(以及它的继承控制器)。这意味着做什么

# application_controller.rb
helper :all

对于Rails> 3.1

# application.rb
config.action_controller.include_all_helpers = true
# This is the default anyway, but worth knowing how to turn it off

使所有视图都可以使用所有辅助模块(至少对于继承自application_controller的所有控制器。

# home_controller.rb
helper UserHelper

使UserHelper方法可用于家庭控制器操作的视图。这相当于:

# HomeHelper
include UserHelper