• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 17/01/2017

Introduction

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

Dans le cours d’initiation, vous avez vu comment créer des formulaires interactifs avec lesquels les utilisateurs peuvent ajouter, modifier et supprimer des données. Ici, nous allons voir plusieurs façons d’enrichir ces formulaires.
Pour cela, on va s’entraîner sur l’application de gestion de livres vue dans le cours d’initiation. Repartez de cette archive puis ‌complétez-la comme suit :

# app/models/book.rb
class Book < ActiveRecord::Base
  validates :title, presence: {
    message: "Le titre doit être renseigné."
  }

  validates :title, uniqueness: {
    message: "Ce titre est déjà pris."
  }
end
# app/controllers/books_controller.rb
class BooksController < ApplicationController
  def index
    @books = Book.all
  end

  def create
    Book.create title: params[:title]
    redirect_to "/books"
  end

  def show
    @book = Book.find(params[:id])
  end

  def update
    @book = Book.find(params[:id])
    if @book.update title: params[:title]
      redirect_to "/books/#{params[:id]}"
    else
      render "show"
    end
  end

  def destroy
    Book.find(params[:id]).destroy
    redirect_to "/books"
  end
end
# app/views/books/index.html.erb
<h1>Liste des livres</h1>
<% @books.each do |book| %>
  <p><a href="/books/<%= book.id %>"><%= book.title %></a></p>
<% end %>

<%= form_tag '/books', method: 'post' do %>
  <input type="text" name="title" />
  <input type="submit" value="Ajouter le livre" />
<% end %>
# app/views/books/show.html.erb
<h1><%= @book.title %></h1>

<%= form_tag "/books/#{@book.id}", method: "patch" do %>
  <input type="text" name="title" value="<%= @book.title %>" />
  <p><%= @book.errors[:title].first %></p>
  <input type="submit" value="Modifier le livre" />
<% end %>

<%= form_tag "/books/#{@book.id}", method: "delete" do %>
  <input type="submit" value="Supprimer le livre" />
<% end %>

<p><a href="/books">Retourner à l’index</a></p>
# config/routes.rb
Rails.application.routes.draw do
  root 'books#index'
  get 'books' => 'books#index'
  get 'books/:id' => 'books#show'
  patch 'books/:id' => 'books#update'
  delete 'books/:id' => 'books#destroy'
  post 'books' => 'books#create'
end
Exemple de certificat de réussite
Exemple de certificat de réussite