224 votes

Que font helper et helper_method ?

helper_method est simple : elle met à la disposition de la vue tout ou partie des méthodes du contrôleur.

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

référence

328voto

Jeremy Points 3057

La méthode helper_method consiste à partager explicitement certaines méthodes définies dans le contrôleur afin de les rendre disponibles pour la vue. Ceci est utilisé pour toute méthode à laquelle vous devez accéder à la fois depuis les contrôleurs et les aides/vues (les méthodes d'aide standard ne sont pas disponibles dans les contrôleurs). Par exemple, cas d'utilisation courant :

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

le site helper d'autre part, permet d'importer une aide complète pour les vues fournies par le contrôleur (et les contrôleurs dont il a hérité). Cela signifie qu'il faut 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 d'aide disponibles pour toutes les vues (au moins pour tous les contrôleurs héritant de application_controller.

# home_controller.rb
helper UserHelper

met les méthodes du UserHelper à la disposition des vues pour les actions du contrôleur d'accueil. Ceci est équivalent à faire :

# HomeHelper
include UserHelper

1voto

Nisarg Jhatakia Points 11

Une méthode Helper est utilisée pour effectuer une tâche répétitive particulière commune à plusieurs classes. Cela nous évite de répéter le même morceau de code dans différentes classes, encore et encore.

Voici un exemple pour simplifier la définition ci-dessus :

Voici un code, où vous auriez quelque chose comme ceci dans la vue :

<% if @user && @user.email.present? %>
  <%= @user.email %>
<% end %>

On peut le nettoyer un peu et le mettre dans une aide :

module SiteHelper
  def user_email(user)
    user.email if user && user.email.present?
  end
end

Puis, dans le code de la vue, vous appelez la méthode d'aide et la transmettez à l'utilisateur comme argument.

<%= user_email(@user) %>

Cette extraction rend le code de la vue plus facile à lire, surtout si vous choisissez judicieusement les noms de vos méthodes d'aide.

J'espère donc que cela clarifie un peu les choses pour vous.

Source de l'offre Source du code

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X