• 20 hours
  • Medium

Free online content available in this course.

course.header.alt.is_certifying

Got it!

Last updated on 1/17/17

Maintenez la connexion avec les sessions

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

Après les variables spéciales params et flash, j’ai le plaisir de vous en présenter une nouvelle : session. Tous les couples clé-valeur de ce dernier persistent d’une page à l’autre. Exemple :

# app/controllers/users_controller.rb
def login
  session[:test] = "Valeur de test"
end
# app/views/users/home.html.erb
<h1>Bienvenue !</h1>
<%= session[:test] %>
<a href="/users/login">S'identifier</a>

Allez ensuite sur http://localhost:3000/users/login pour modifier la variable de session dans le contrôleur, puis sur http://localhost:3000/users/home pour afficher la valeur de la variable de session. Vous verrez alors "Valeur de test" à l’écran alors que la fonction home du contrôleur est vide.

Utilisez ce mécanisme pour mémoriser l’identifiant de l’utilisateur connecté :

# app/controllers/users_controller.rb
class UsersController < ApplicationController
  def home
    if session[:user_id]
      @current_user = User.find(session[:user_id])
    end
  end

  def login
  end

  def check
    @current_user = User.where(name: params[:name], password: params[:password]).first
    if @current_user
      session[:user_id] = @current_user.id
      flash[:info] = "Vous êtes maintenant connecté"
      redirect_to "/users/home"
    else
      session[:user_id] = nil
      flash[:info] = "Échec de la connexion"
      redirect_to "/users/login"
    end
  end
end
# app/views/users/home.html.erb
<% if @current_user %>
  <h1>Bienvenue <%= @current_user.name %> !</h1>
<% else %>
  <h1>Bienvenue visiteur anonyme !</h1>
  <a href="/users/login">S'identifier</a>
<% end %>

Et voilà, la connexion persiste !

Example of certificate of achievement
Example of certificate of achievement