• 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

Utilisez les données sur le site

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

Vous savez manipuler vos données dans la console rails. Vous êtes vraiment très proche de savoir le faire sur votre site. Premièrement, ajoutez quelques livres à votre base de données, ça nous donnera de quoi travailler. J’en profite pour vous donner une syntaxe plus courte que celle vue au chapitre précédent :

Book.create title: "Le Petit Prince"
Book.create title: "Le Meilleur des mondes"
Book.create title: "1984"

En une ligne, le create fait la même chose qu’un new et save. Pratique ! Nous voici donc avec trois livres en base.

Pour constater que tous ces éléments sont présents, vous pouvez faire un Book.all.

Le résultat est un tableau de livres :

#<ActiveRecord::Relation [#<Book id: 2, title: "Le petit prince">, #<Book id: 3, title: "Le Meilleur des mondes">, #<Book id: 4, title: "1984">]>

Vous êtes maintenant prêt à créer une page listant ces livres. Faites exit pour sortir de la console rails et revenir dans votre terminal.

Pour rappel, un contrôleur permet de gérer un ensemble de pages web. Pour ne pas mélanger ce sur quoi nous travaillons actuellement avec le code écrit précédemment, générez en un nouveau :

rails generate controller books index

C’est une bonne habitude avec Rails d’appeler un contrôleur comme la table qu’il concerne. C’est pourquoi je l’ai appelé « books ». Je veux que ce contrôleur gère une page qui liste mes livres. Par habitude, une page qui liste des choses, on l’appelle « index ». Toutes ces habitudes dont je vous parle sont très présentes chez les développeurs qui utilisent Rails. C’est bien de prendre le pli dès le début.

Voici à quoi ressemble le code généré par la commande précédente dans les répertoires app/controllers/ et app/views/ :

# app/controllers/books_controller.rb
class BooksController < ApplicationController
  def index
  end
end
# app/views/books/index.html.erb
<h1>Books#index</h1>
<p>Find me in app/views/books/index.html.erb</p>

Vous savez que Book.all retourne un tableau de livres. Et vous savez comment faire une boucle dans une vue. Passez une minute à réfléchir à comment vous pourriez afficher la liste des livres sur votre page.

Voici la solution :

# app/controllers/books_controller.rb
class BooksController < ApplicationController
  def index
    @les_livres = Book.all
  end
end
# app/views/books/index.html.erb
<% @les_livres.each do |un_livre| %>
  <p><%= un_livre.title %></p>
<% end %>

J’ai utilisé les noms de variable « les_livres » et « un_livre » pour ne pas se mélanger dans les termes. Mais dans les règles de l’art, voici à quoi ressemblerait le code :

# app/controllers/books_controller.rb
class BooksController < ApplicationController
  def index
    @books = Book.all
  end
end
# app/views/books/index.html.erb
<h1>Liste des livres</h1>
<% @books.each do |book| %>
  <p><%= book.title %></p>
<% end %>

La logique est la suivante : un tableau de « Book » s’appelle « books » (tableau = plusieurs = pluriel), auquel nous ajoutons un « @ » pour utiliser cette variable dans la vue ; et dans le each, nous appelons chaque livre « book », au singulier, vu qu’il n’y en a qu’un seul à la fois.

Lancez le serveur, affichez la page http://localhost:3000/books/index : les trois titres s’affichent !

La route /books/index n’est pas très élégante. Il serait plus sympathique d’avoir /books tout seul. Vous souvenez-vous de comment modifier une route ?

Pour se faire, ajoutez cette ligne dans le fichier config/routes.rb :

get 'books' => 'books#index'

Observez le résultat : http://localhost:3000/books.

Récapitulatif du fonctionnement de Rails

  1. Un utilisateur demande l’affichage d’une page du site ;

  2. Le fichier des routes appelle la bonne fonction du bon contrôleur ;

  3. Si besoin, le contrôleur récupère, modifie ou supprime des données via le modèle ;

  4. Le modèle répercute ces modifications dans la base de données ;

  5. Le contrôleur appelle la vue, qui construit la page HTML ;

  6. Une fois la page HTML construite, celle-ci est envoyée au navigateur de l’utilisateur.

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