Layout et vues

2009-06-02 12:56:41 UTC

Missing

Comme Rails est un Framework(on ne va pas radoter), il a son propre système de Layout assez avancé.
Pour ceux qui ont déjà fait leur premiers pas sous RoR, ils peuvent sauter l'introduction...

Introduction

Voici une arborescence d'une application classique sous Rails avec un simple Controleur (User dans notre cas) ayant 5 actions (générées par SCAFFOLD : edit, index, new, show et destroy (qui ne contient de pas de vue).

Arborescence Application Ruby on Rails Généré par Scaffold

Par défaut, les vues des actions (ou méthodes) du controleur User utilise le Layout users.html.erb. En absence de ce dernier il utilisera le Layout application.html.erb. D'ailleurs, la plupart de petites applications sous Rails, mettent l'en-tête (header) et le pied de page (footer) dans ce fichier, et ce qui change dans le body seront les vues des actions.

Selection du Layout à partir du Controleur

Il est possible de selectionner un layout au niveau du controleur en fonction de la méthode autre que celui de la vue par défaut ou bien application.html.erb
ci dessous un exemple parlant.

class UserController > ApplicationController
  layout "patron", :except => [ :index, :edit ]
  ....

ou bien ...

class UserController > ApplicationController
  layout "patron", :only => [ :new, :show ]
  ....

on peut encore aller plus loins

class UserController > ApplicationController

layout :layout_utilise
...

private

def layout_utilise
    if User.is_logged?
     "admin"
    else
     "guest"
    end
  end
end

Pas mal de fois, quand on utilise des appels AJAX pour changer le contenu d'un div ou autre, on n'a pas besoin d'avoir le layout qui encapsule la vue de l'action de cet appel.
Ainsi on utilise le code suivant

def appelajax
  ...
  render(:layout => false)
end

Il reste encore d'autres façons de spécifier le layout par rapport à une vue, ça sera dans un futur article

Ajouter un Commentaire

Auteur

Commentaire

-->