Зависит от того, как вы хотите обрабатывать контент на этих страницах.
Подход № 1 - хранить содержимое в представлениях
Если вы просто хотите поместить весь ваш контент в представления ERB, тогда очень простой подход - создать PagesController
, целью которого является работа со статическими страницами. Каждая страница представлена одним действием в контроллере.
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'
Затем создайте представления home.html.erb, about.html.erb и contact.html.erb в разделе app / views / pages. Эти представления содержат любой контент, который вы хотите на ваших статических страницах. По умолчанию они будут использовать макет application.html.erb вашего приложения.
Вы также захотите изучить кэширование страниц , чтобы повысить производительность.
Подход № 2 - хранить содержимое в базе данных
Другой подход, который я использовал, - создать очень простую CMS для статических страниц. В этом случае страницы представлены в модели. Он использует friendly_id gem для обработки слагов для каждой страницы, чтобы их можно было получить по красивому имени в URL (например, / about), а не по идентификатору.
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'
Примечание: поместите эту запись в конец Routes.rb, поскольку она соответствует всему.
Тогда, как вы хотите создавать, редактировать и обновлять страницы, зависит от вас - вы можете иметь интерфейс администратора или каким-то образом встроить его в ваш публичный интерфейс. Этот подход также может выиграть от кэширования страниц.