El método helper_method
consiste en compartir explícitamente algunos métodos definidos en el controlador para que estén disponibles para la vista. Esto se utiliza para cualquier método al que necesite acceder tanto desde los controladores como desde los ayudantes / vistas (los métodos de ayuda estándar no están disponibles en los controladores). Por ejemplo, caso de uso común:
#application_controller.rb
def current_user
@current_user ||= User.find_by_id!(session[:user_id])
end
helper_method :current_user
el helper
método, por otro lado, es importar un ayudante completo a las vistas proporcionadas por el controlador (y sus controladores heredados). Lo que esto significa es hacer
# application_controller.rb
helper :all
Para rieles> 3.1
# application.rb
config.action_controller.include_all_helpers = true
# This is the default anyway, but worth knowing how to turn it off
hace que todos los módulos auxiliares estén disponibles para todas las vistas (al menos para todos los controladores que heredan de application_controller.
# home_controller.rb
helper UserHelper
hace que los métodos UserHelper estén disponibles para las vistas de acciones del controlador de inicio. Esto es equivalente a hacer:
# HomeHelper
include UserHelper
include UserHelper
está en elHomeHelper
módulo, en lugar de en el controlador? AFAIK, simplemente incluir el módulo auxiliar en el controlador no compartirá los métodos con las vistas.