2009-07-24 5 views
3

Я создаю персональный сайт с Ruby on Rails. По большей части RoR - идеальный инструмент, позволяющий вести записи в блогах, комментарии и т. Д. Все довольно просто.Создание нестандартных страниц с Ruby on Rails

Однако я хочу иметь несколько страниц, для которых не требуется какая-либо конкретная модель. Например, страница «Обо мне» необходима, и, тем не менее, не гарантирует ее собственную модель/контроллер. Кроме того, эти «singleton» страницы будут связаны с моим макетом по умолчанию и должны быть доступны даже тогда, когда нет созданных объектов.

Есть ли хороший способ справиться с этим? Я видел много сайтов RoR, которые имеют отдельные страницы, сохраняя при этом довольно URL-адреса, но никогда не демонстрируют, как они структурированы. Наконец, можно ли сделать эти отдельные страницы динамическими? Я бы предпочел не статический html, если вообще избежать.

ответ

7

Там в Railscast об этом предмете, который может ответить на ваш вопрос:

http://railscasts.com/episodes/117-semi-static-pages

Я использовал это решение несколько раз в моих приложениях Rails.

+0

Отлично, спасибо! Кажется прочным и чистым. – NolanDC

2

Обычно я создаю «статический» контроллер, например AboutController.

ruby script/generate controller about 

Тогда я создать столько действий, как мои о страницах: index, contact, terms ... Затем добавить общий маршрут в моем routes.rb файле.

map.about 'about/:action', :controller => "about" 

В моих страницах я ссылаться на одну страницу, как

<%= link_to "Contact", about_path(:action => "contact") %> 

Поскольку они являются статические страницы, вы можете также рассмотреть вопрос о кэшировать их в контроллере.

class AboutController < ApplicationController 
    caches_page :index, :contact, ... 
end 

Эта архитектура хорошо подходит для большей части статических страниц. Если вы хотите «полустатические» страницы, вы можете подумать о динамической загрузке содержимого из базы данных.

Смежные вопросы