Hängt davon ab, wie Sie mit dem Inhalt dieser Seiten umgehen möchten.
Ansatz 1 - Speichern von Inhalten in Ansichten
Wenn Sie nur alle Ihre Inhalte in ERB-Ansichten ablegen möchten, besteht ein sehr einfacher Ansatz darin, eine zu erstellen, PagesController
deren Zweck darin besteht, statische Seiten zu verarbeiten. Jede Seite wird durch eine Aktion in der Steuerung dargestellt.
pages_controller.rb:
class PagesController < ApplicationController
def home
end
def about
end
def contact
end
end
route.rb:
match '/home' => 'pages#home'
match '/about' => 'pages#about'
match '/contact' => 'pages#contact'
Erstellen Sie dann die Ansichten home.html.erb, about.html.erb und contact.html.erb unter app / views / pages. Diese Ansichten enthalten den gewünschten Inhalt Ihrer statischen Seiten. Sie verwenden standardmäßig das Layout application.html.erb Ihrer App.
Sie sollten sich auch mit dem Seiten-Caching befassen , um die Leistung zu steigern.
Ansatz 2 - Inhalte in der Datenbank speichern
Ein anderer Ansatz, den ich verwendet habe, besteht darin, ein sehr einfaches CMS für statische Seiten zu erstellen. In diesem Fall werden Seiten im Modell dargestellt. Es verwendet das Juwel "friend_id" , um Slugs für jede Seite so zu behandeln, dass sie durch einen hübschen Namen in der URL (z. B. / about) und nicht durch eine ID abgerufen werden können.
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 %>
route.rb:
match '/:id' => 'pages#show'
Hinweis: Setzen Sie diesen Eintrag am Ende von route.rb, da er mit allem übereinstimmt.
Dann liegt es an Ihnen, wie Sie Seiten erstellen, bearbeiten und aktualisieren möchten - Sie können eine Administrationsoberfläche haben oder sie irgendwie in Ihre öffentliche Oberfläche integrieren. Dieser Ansatz kann auch vom Seiten-Caching profitieren.