On imagine un système simple de gestion de thèmes dans lequel on passe le nom du thème dans une variable de session.

Tout d'abord on créé un répertoire de thèmes à la racine de son application :

mkdir /repertoire/du/site/rails/themes

Pour chaque thème, on a un sous-répertoire dans themes. Par exemple un thème standard :

mkdir /repertoire/du/site/rails/themes/standard

Enfin pour notre thème on a un layout : standard/layout.rhtml Dans notre contrôleur, on définit une méthode de thème :

def theme_layout
"../../themes/"+@session[:theme]+"/layout"
end

A présent on peut utiliser le thème par render :

render :use_full_path=>true, :layout=>:theme_layout

ou alors dans tout le contrôleur :

class MonController < ApplicationController
layout :theme_layout
end

On peut définir quel thème utiliser n'importe où avec la variable de session :

@session[:theme]="standard"