Хранение компонентов html в базе данных

63
6

Я хочу хранить html-компоненты моего веб-сайта в базе данных, чтобы каждый пользователь мог выбирать из множества компонентов

например:

одна страница с html-страницей с навигационной панелью и раздел, который может быть изменен, и другие материалы, макет может содержать следующее:

    <div id="nav-holder">
<!-- Nav html goes here -->
</div>

<div id="about-holder">
<!-- about section html goes here -->
</div>

<!-- other html stuff -->

Теперь мой db структурирован для хранения шаблона с его возможными компонентами для каждого раздела и хранит "текст" в нем в столбце html, и я добавляю все мои стили и скрипты к одному листу и js файлу, который загружается для всего раскладка.

Есть ли наилучшая практика для хранения и рендеринга этих компонентов в моем db?

Редактировать:

Моя основная цель - создать генератор веб-сайта с некоторой настройкой, предоставляя набор шаблонов, которые пользователь выбирает, и внутри одного шаблона он может настроить свой шаблон, выбирая различные компоненты (navs, about sections,...)

Также я буду извлекать данные из какого-то места и заполнять их в эти шаблоны . Пользователь не сможет изменить данные здесь, он уже готов, поэтому нет необходимости давать пользователю возможность изменять данные, которые будут заполнены документ

спросил(а) 2021-01-25T17:40:47+03:00 5 месяцев назад
1
Решение
63

Есть ли наилучшая практика для хранения и рендеринга этих компонентов в моем db?

Да, не надо! По нескольким причинам основным является то, что вы используете свою базу данных для постоянного хранения переменных, связанных с моделями. Не html. Место для вашего html находится в ваших взглядах, место, где можно выбирать, какой html показывать в ваших контроллерах.

Другие причины включают в себя то, что чтение вашего html из базы данных будет замедлять реакцию ваших приложений, а Rails стремится сделать текст из базы данных html безопасным, то есть он автоматически не будет вести себя как html. Это предосторожность безопасности, так как очень распространенная атака заключается в том, чтобы вставить "плохой" код в вашу базу данных, который затем запускается, когда вы его восстанавливаете и поставляете его ничего не подозревающему пользователю.

Используйте частичные. Справочный раздел 3.4 этого руководства Rails

Сохраните выбор пользователей компонентов в базе данных. Если он выбирает navbar_23, вы храните эту 9-значную строку в базе данных и по запросу, ваш шаблон обслуживает его частичным именем _navbar_23.html.erb из вашей папки представлений.

Например, в вашей папке views создайте вложенные папки /navbars, внутри которых вы найдете варианты Navbars. Частицы начинаются с подчеркивания и заканчиваются на.html.erb

В вашей модели сохраните выбор пользователей navbar в файле user.navbar. Просто имя, а не начальное подчеркивание или.html.erb

В вашем шаблоне;

render partial: "views/navbars/" + user.navbar

Rails автоматически добавит символ подчеркивания и.html.erb, когда он ищет файл.

ответил(а) 2021-01-25T17:40:47+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема