Depende de cómo quiera manejar el contenido de esas páginas.
Enfoque n. ° 1: almacenar contenido en vistas
Si solo desea colocar todo su contenido en vistas ERB, entonces un enfoque muy simple es crear un PagesController
cuyo propósito sea tratar con páginas estáticas. Cada página está representada por una acción en el controlador.
pages_controller.rb:
class PagesController < ApplicationController
def home
end
def about
end
def contact
end
end
rutas.rb:
match '/home' => 'pages#home'
match '/about' => 'pages#about'
match '/contact' => 'pages#contact'
Luego, cree las vistas home.html.erb, about.html.erb y contact.html.erb en app / views / pages. Estas vistas contienen cualquier contenido que desee en sus páginas estáticas. De forma predeterminada, usarán el diseño application.html.erb de su aplicación.
También querrá examinar el almacenamiento en caché de la página para aumentar el rendimiento.
Enfoque n. ° 2: almacenar contenido en la base de datos
Otro enfoque que he usado es hacer un CMS muy básico para páginas estáticas. En este caso, las páginas están representadas en el modelo. Utiliza la gema friendly_id para manejar los slugs de cada página para que puedan ser recuperados por un bonito nombre en la URL (por ejemplo, / about) en lugar de por 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 %>
rutas.rb:
match '/:id' => 'pages#show'
Nota: ponga esta entrada al final de routes.rb ya que coincide con todo.
Entonces, la forma en que desea crear, editar y actualizar las páginas depende de usted: puede tener una interfaz de administración o integrarla en su interfaz pública de alguna manera. Este enfoque también puede beneficiarse del almacenamiento en caché de páginas.