• 20 hours
  • Medium

Free online content available in this course.

course.header.alt.is_certifying

Got it!

Last updated on 1/17/17

Démarrez votre projet en une commande avec le scaffolding

Log in or subscribe for free to enjoy all this course has to offer!

Au long des chapitres passés, j’ai respecté autant que possible la façon de faire de Rails en matière de formulaires et de contrôleurs. Parfois, j’ai laissé de côté certaines notions car vous n’auriez pas eu toutes les clés pour les comprendre à ce moment-là. Ce temps est révolu ! Dans cette partie, je vous présente les touches finales pour maîtriser vos contrôleurs et formulaires. L’intérêt est double :

  • Vous consolidez votre apprentissage avec de nouvelles façon de faire qui augmenteront votre efficacité ;

  • Vous vous adapterez mieux le jour où vous devrez comprendre des applications programmées par d’autres personnes.

On y va !

Première escale : le scaffolding

Dans le monde merveilleux du développement, un scaffold, ou échaffaudage en français, désigne l’ensemble des 7 actions de base sur une ressource, à savoir :

index, show, new, create, edit, update et destroy.

C’est le "squelette" du contrôleur, même si parfois certaines de ces actions ne sont pas nécessaires.

Partez sur un nouveau projet. Il existe un moyen de générer d’un coup modèle, migration, contrôleur, routes et vues avec la commande suivante :

rails g scaffold author name:string birthdate:date
rake db:migrate

Ajoutez quelques auteurs avec la console rails.

Observez le contrôleur. Tout a été généré automatiquement !

Il y a quelques différences avec ce que vous avez appris jusque là. Avant que je ne vous commente ces différences, je vous invite à consulter la page http://localhost:3000/authors.json. Elle affiche de manière très brute le contenu de votre base de données. C'est utile pour faire communiquer des applications entre elles (mais ce n’est pas le sujet de ce cours).

Ce comportement existe grâce à deux choses :

  1. une vue dédiée dans app/views/authors/index.json.jbuilder. Ce fichier détaille ce qui doit figurer dans les données affichées. Il existe plusieurs façons de générer du JSON, Jbuilder est l’une d’entre elles.

  2. pour les fonctions qui ne sont pas en GET, il faut unrespond_to. Par exemple :

#authors/controllers/authors_controllers.rb, dans la définition de create
format.html { redirect_to @author, notice: 'Author ... created.' }
format.json { render :show, status: :created, location: @author }

Sur ces lignes, notez : 

  • leredirect_to @author, qui déduit tout seul la route /authors/#{@author.id}. Il est également possible d’utiliser le helperauthor_path(@author) que je recommande, car il est davantage explicite ;

  • lesnotices : c’est un moyen de remplir automatiquement la variableflash[:notice] ;

  • lestatus: :created, qui envoie un code de réussite au navigateur.

Le scaffold gère également les clés étrangères et cela est bien pratique :

rails g scaffold book title:string content:text author:references

Notez le motreferences, curieusement au pluriel – mais c’est comme ça. Rails comprendra que vous voulez un attribut author_iden faisant cela.

Lisez les migrations, elles sont dans le dossierdb/migrates/. La syntaxe n’est pas la même que celle que vous avez apprise dans les parties précédentes, sachez que les deux existent et cohabitent.

Example of certificate of achievement
Example of certificate of achievement