это хорошее место для УДАЛЕНИЯ кода?

#ruby-on-rails-3 #architecture

#ruby-on-rails-3 #архитектура

Вопрос:

Владелец сайта, над которым я работаю, попросил меня сделать страницу «О нас» редактируемой (ею, через веб-интерфейс). На самом деле, всего 5 страниц, которые она хочет сделать редактируемыми — о нас, Условиях обслуживания и так далее.

В старой реализации, когда эти страницы были статическими файлами просмотра, у меня были все URL-адреса, закодированные в routes.rb

 scope :controller => :home do
  get :about
  get :terms
  # etc ...
end
  

Теперь, когда эти разные действия извлекают данные из базы данных (или где бы то ни было), кажется, что стандартный подход RESTful может заключаться в создании Pages ресурса и объединении всех представлений в show действие.

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

В частности, выделение отдельных маршрутов из PagesController может вызвать следующие проблемы:

  • Я не мог использовать именованные помощники маршрута, такие как about_path
  • Маршруты для постоянных страниц на сайте будут храниться в базе данных, что означает, что…
  • обслуживание, вероятно, будет головной болью, поскольку это не обычное место для хранения маршрутов.

Поэтому в настоящее время я думаю, что лучший подход — оставить эти URL-адреса закодированными routes.rb и иметь отдельные действия контроллера, каждое из которых будет извлекать свою собственную страницу из БД.

Кто-нибудь может поделиться некоторыми соображениями? Как вы справляетесь с данными, которые не являются полностью статичными, но все же должны быть жестко подключены к сайту?

Комментарии:

1. Вы позволите им включать HTML-теги в свои отправленные файлы или просто текст? Как насчет связанных изображений или других ресурсов?

2. @Perry — Мы собирались использовать Markdown для текста. Итак, да для HTML-тегов, нет для изображений.

Ответ №1:

Если вы собираетесь разрешить markdown, мне нравится идея контроллера страниц и модели. Если вам кажется, что все 5 страниц должны выглядеть одинаково, я бы выбрал один шаблон, который заполняется пользовательским контентом и соответствующей навигацией.

Моим выбором было бы задать маршруты, создать представления (включая маршрутизацию) и заполнить представления с помощью созданной пользователем уценки.

Трудно сказать, не зная больше о вашем сайте, но я предпочитаю не разрешать пользователям создавать страницы, отражающие идентификатор сайта (информация, условия и т. Д.), Если только это не то, за что они платят.

Комментарии:

1. Да, это то, что я в итоге сделал. У меня есть контроллер страниц и один show шаблон, который отображает все страницы, но все маршруты для страниц перечислены по отдельности routes.rb , а в create контроллере нет действий, поэтому пользователи не могут добавлять новые страницы.