• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 31/07/2020

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