web-dev-qa-db-fra.com

Que font helper et helper_method?

helper_method est simple: il met certaines ou toutes les méthodes du contrôleur à la disposition de la vue.

Qu'est-ce que helper? Est-ce l'inverse, c'est-à-dire qu'il importe des méthodes d'assistance dans un fichier ou un module? (Peut-être que le nom helper et helper_method sont similaires. Ils peuvent plutôt préférer être share_methods_with_view et import_methods_from_view)

référence

195

La méthode helper_method consiste à partager explicitement certaines méthodes définies dans le contrôleur pour les rendre disponibles pour la vue. Cette option est utilisée pour toutes les méthodes auxquelles vous devez accéder à partir des contrôleurs et des assistants/vues (les méthodes d'assistance standard ne sont pas disponibles dans les contrôleurs). par exemple. cas d'usage courant:

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

la méthode helper, quant à elle, permet d'importer un assistant complet dans les vues fournies par le contrôleur (et ses contrôleurs hérités). Qu'est-ce que cela signifie, c'est faire

# application_controller.rb
helper :all

Pour 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

rend tous les modules auxiliaires disponibles pour toutes les vues (au moins pour tous les contrôleurs héritant de application_controller.

# home_controller.rb
helper UserHelper

rend les méthodes UserHelper disponibles aux vues pour les actions du contrôleur domestique. Cela équivaut à faire:

# HomeHelper
include UserHelper
283
Jeremy