helper和helper_method做了什么?

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

什么是helper ? 反过来,也就是说,它将辅助方法导入到文件或模块中? (也许名字helperhelper_method是相同的,他们可能会改为share_methods_with_viewshare_methods_with_view

参考

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

 #application_controller.rb def current_user @current_user ||= User.find_by_id!(session[:user_id]) end helper_method :current_user 

另一方面, helper方法用于将整个帮助程序导入到由控制器提供的视图(以及它的inheritance控制器)中。 这意味着什么

 # 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 

使所有的帮助模块都可用于所有的视图(至less所有的控制器inheritance自application_controller。

 # home_controller.rb helper UserHelper 

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

 # HomeHelper include UserHelper