helper和helper_method做了什么?
helper_method
很简单:它使部分或全部控制器的方法可用于视图。
什么是helper
? 反过来,也就是说,它将辅助方法导入到文件或模块中? (也许名字helper
和helper_method
是相同的,他们可能会改为share_methods_with_view
和share_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