helper 和 helper_method 是做什么的? [英] What do helper and helper_method do?
问题描述
helper_method
很简单:它使控制器的部分或全部方法对视图可用.
helper_method
is straightforward: it makes some or all of the controller's methods available to the view.
什么是helper
?是不是反过来,即它将辅助方法导入文件或模块?(也许 helper
和 helper_method
的名称相似.它们可能是 share_methods_with_view
和 import_methods_from_view
)
What is helper
? Is it the other way around, i.e., it imports helper methods into a file or a module? (Maybe the name helper
and helper_method
are alike. They may rather instead be share_methods_with_view
and import_methods_from_view
)
推荐答案
helper_method
方法是显式共享控制器中定义的一些方法,使它们可用于视图.这用于您需要从控制器和助手/视图访问的任何方法(标准助手方法在控制器中不可用).例如常见用例:
The method helper_method
is to explicitly share some methods defined in the controller to make them available for the view. This is used for any method that you need to access from both controllers and helpers/views (standard helper methods are not available in controllers). e.g. common use case:
#application_controller.rb
def current_user
@current_user ||= User.find_by_id!(session[:user_id])
end
helper_method :current_user
另一方面,helper
方法用于将整个帮助器导入控制器提供的视图(它是继承的控制器).这意味着什么
the helper
method on the other hand, is for importing an entire helper to the views provided by the controller (and it's inherited controllers). What this means is doing
# application_controller.rb
helper :all
对于 Rails > 3.1
For 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 继承的所有控制器.
makes all helper modules available to all views (at least for all controllers inheriting from application_controller.
# home_controller.rb
helper UserHelper
使 UserHelper 方法可用于主控制器操作的视图.这相当于做:
makes the UserHelper methods available to views for actions of the home controller. This is equivalent to doing:
# HomeHelper
include UserHelper
这篇关于helper 和 helper_method 是做什么的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!