Helpers: Comment inclure les helpers dans un controller dans Rails 5 ?

Partagez sur:

Le framework Rails fournit un large nombre de helpers pour les assets, dates, formulaires, les nombres et les models d’objet.  Ces helpers sont disponibles par défaut dans les templates (view).

Les helpers sont utilisés dans rails dans le but de  séparer  une certaine logique  de traitement  des templates et de les regroupés au sein d’un module disponible et réutilisable au sein votre application. Cette manière de procéder est propre et recommandée aux développeurs rails.

Par défaut chaque controller peut inclure des helpers. Ces  helpers sont seulement accessible dans les controllers à travers la méthode de classe #helpers.

Dans les précédentes versions de Rails, les controllers pouvaient inclure automatiquement les helpers qui portent le même nom que le controller, exemple : MyController pouvait inclure automatiquement MyHelper. Vous pouvez toujours utiliser cette possibilité en changeant dans la configuration la valeur de :

config.action_controller.include_all_helpers=false

les helpers additionnel peuvent être spécifier en utilisant la méthode de class « helper » dans ActionController ::Base ou dans n’importe controller en héritant de lui.

La méthode to_s de la méthode class Time peut être utilisé dans un helper pour afficher un message personnalisé si l’objet Time est vide.

module FormattedTimeHelper
  def format_time(time, format=:long, blank_message=" ")
    time.blank? ? blank_message : time.to_s(format)
  end
end

La méthode «  FormattedTimeHelper » peut maintenant être inclut dans un controller en utilisant la méthode de class helper

class EventsController < ActionController::Base
  helper FormattedTimeHelper
  def index
    @events = Event.all
  end
end

Alors dans chaque vue rendu par le controller « EventController », la méthode de class format_time peut être appelé

<% @events.each do |event| -%>
  <p>
    <%= format_time(event.time, :short, "N/A") %> | <%= event.name %>
  </p>
<% end -%>

Pour finir nous avons deux événements dont l’un avec une date et l’autre sans date, donc aurons un résultat comme suit :

23 Aug 11:30 | Carolina Railhawks Soccer Match
N/A | Carolina Railhawks Training Workshop

Lire aussi : Ruby On Rails: Les 6 raisons de l&rsquo;utiliser pour développement web

Par Amos


Partagez sur: