• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 23/10/2018

Les helpers

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Les helpers sont des outils de Rails qui permettent de partager du code Ruby entre les différentes vues. Illustration :

# app/helpers/books_helper.rb
module BooksHelper
  def exemple
    "Ceci est un test"
  end
end
# app/views/books/index.html.erb
<h1>Liste des livres</h1>
<%= exemple %>
<% @books.each do |book| %>
  <p><a href="/books/<%= book.id %>"><%= book.title %></a></p>
<% end %>

Lancez le serveur puis allez sur http://localhost:3000/books. Le texte « Ceci est un test » s’affiche sous le titre. L’intérêt est de rendre les fichiers HTML plus légers en déplaçant du code récurrent dans un helper, telle que la fonction exemple du fichier app/helpers/books_helper.rb.

Si cet exemple permet de comprendre le fonctionnement d’un helper, il n’est pas très utile. Voici quelque chose présentant davantage d’intérêt :

# app/helpers/books_helper.rb
module BooksHelper
  def book_link the_book
    html = "<a href='/books/#{the_book.id}'>".html_safe
    html += the_book.title
    html += "</a>".html_safe
    html
  end
end
# app/views/books/index.html.erb
<h1>Liste des livres</h1>
<% @books.each do |book| %>
  <p><%= book_link book %></p>
<% end %>

Ici, le helper book_link prend un livre en paramètre et retourne un lien HTML. Dans la vue, j’ai remplacé le lien par un appel de ce helper. Notez les html_safe utilisés çà et là. Essayez votre code avec et sans. Sans, le code HTML ne sera pas interprété. Autrement dit, au lieu d’afficher un lien, cela va afficher la balise elle-même.

La fonction form_tag, que vous avez vu plus tôt, est un helper « caché » (on ne le voit pas dans app/helpers) que Rails met à votre disposition. Vous en découvrirez d’autre au long de votre apprentissage.

Exemple de certificat de réussite
Exemple de certificat de réussite