Неправильно ли использовать партиалы таким образом?

Итак, я сейчас разрабатываю веб-сайт на рельсах. По сути, это статический сайт (но я использую рельсы, потому что в конечном итоге мой клиент хочет добавить функции блога и публикации), который имеет множество разных разделов с разными статьями в каждом разделе. Каждая статья разработана со своей собственной html-структурой, некоторые из них имеют таблицы, разделы, цвет шрифта и т. д., поэтому хранение этих статей в виде текста в базе данных не имеет смысла. Тем не менее, также не имело смысла иметь полностью отдельный html-файл для каждой статьи в каждом разделе, когда их родительский элемент будет иметь одинаковую общую структуру (под этим я подразумеваю, что каждый раздел в сайты, такие как about или публикации, будут иметь свой собственный уникальный макет, однако каждая статья, принадлежащая данному разделу, будет помещена в тот же div, что и родственные статьи.

Так у меня появилась идея. Я думал, что буду использовать партиалы для рендеринга уникального контента в одном и том же макете для каждого раздела. (имейте в виду, что в настоящее время в базе данных ничего не хранится.) Поэтому я думаю настроить сайт так, чтобы для разделов были разные папки просмотра, и внутри каждой из этих папок просмотра у меня будет еще одна папка с названием «контент». в котором я помещу конкретный html для данного маршрута.

Например, один из моих маршрутов «о нас» выглядит так

    get 'about/:pagename', to: 'about#show'

Который отправляет параметр :pagename контроллеру для метода show, после чего я фиксирую этот параметр в переменной (в файле about_controller.rb)

    def show
      @content = params[:pagename].downcase
    end

А затем представление show.html.erb отображает партиал с тем же именем, что и переменная @content.

    <div><%= render partial: "about/content/#{@content}" %></div>

В этот момент представление просматривает папку содержимого в поисках определенного фрагмента, с которым оно вызывается, и отображает этот HTML-код.

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


person Josh Hadik    schedule 07.05.2015    source источник


Ответы (1)


Это довольно интересный способ сделать это, но то, что вы описываете, в значительной степени является CMS, и уже есть довольно много, которые вам подойдут.

Сразу приходят на ум две популярные из них: Locomotive CMS и Система управления контентом Radiant

Не нужно изобретать велосипед! Они также поддерживают статические страницы.

person Mario    schedule 07.05.2015
comment
Я изучил это... Но из моего опыта работы с CMS (в основном Wordpress) они ограничивают ваш контроль над дизайном вашего сайта, а также над JavaScript и анимацией на сайте. Это характерно для всех CMS или только для Wordpress? - person Josh Hadik; 08.05.2015
comment
Даже WordPress не ограничивает вас таким образом, так как вы всегда можете написать свои собственные темы. Единственное, в чем вас может ограничить CMS, так это в способе сохранения данных на сервере. Тем не менее, Locomotive НАМНОГО более настраиваемый, чем Wordpress - person Mario; 08.05.2015
comment
Истинный. Но, по крайней мере, с Wordpress кажется, что это потребует изучения совершенно нового языка, с которым у меня не было опыта (php), однако похоже, что и radiant, и локомотив написаны на Ruby on Rails, поэтому я обязательно попробую их! - person Josh Hadik; 08.05.2015