Cela dépend de la façon dont vous voulez gérer le contenu de ces pages.
Approche n° 1 - stocker le contenu dans les vues
Si vous souhaitez simplement placer tout votre contenu dans des vues ERB, une approche très simple consiste à créer un fichier de type PagesController
dont le but est de traiter les pages statiques. Chaque page est représentée par une action dans le contrôleur.
pages_controller.rb :
class PagesController < ApplicationController
def home
end
def about
end
def contact
end
end
routes.rb :
match '/home' => 'pages#home'
match '/about' => 'pages#about'
match '/contact' => 'pages#contact'
Créez ensuite les vues home.html.erb, about.html.erb et contact.html.erb sous app/views/pages. Ces vues contiennent tout le contenu que vous voulez sur vos pages statiques. Elles utiliseront par défaut le layout application.html.erb de votre application.
Vous voudrez également vous pencher sur mise en cache des pages pour vous donner un coup de pouce dans la performance.
Approche n° 2 - stocker le contenu dans une base de données
Une autre approche que j'ai utilisée consiste à créer un CMS très basique pour les pages statiques. Dans ce cas, les pages sont représentées dans le modèle. Il utilise le gemme friendly_id pour gérer les slugs pour chaque page afin qu'ils puissent être récupérés par un joli nom dans l'URL (par exemple, /about) plutôt que par ID.
page.rb :
class Page < ActiveRecord::Base
attr_accessible :title, :content
validates_presence_of :title, :content
has_friendly_id :title, :use_slug => true, :approximate_ascii => true
end
pages_controller.rb :
class PagesController < ApplicationController
def show
@page = Page.find(params[:id])
render 'shared/404', :status => 404 if @page.nil?
end
end
show.html.erb :
<%= raw @page.content %>
routes.rb :
match '/:id' => 'pages#show'
Note : mettez cette entrée à la fin de routes.rb car elle correspond à tout.
Vous pouvez disposer d'une interface d'administration ou l'intégrer à votre interface publique d'une manière ou d'une autre. Cette approche peut également bénéficier de la mise en cache des pages.