【问题标题】:Storing html components in database将html组件存储在数据库中
【发布时间】:2015-04-10 20:28:59
【问题描述】:

我想将我网站的html组件存储在数据库中,以便用户每次都能从各种组件中进行选择

例如:

一个页面样式的 html 页面,带有导航栏和关于可以更改的部分和其他内容,它的布局可以包含以下内容:

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

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

    <!-- other html stuff -->

我的数据库现在的结构是为每个部分保存带有可能组件的模板,并在它的 html 列中存储一个“文本”,并且我将我所有的样式和脚本添加到加载的一个工作表和 js 文件中整个布局。

在我的数据库中存储和呈现这些组件是否有任何最佳实践?

编辑:

我的主要目的是创建一个具有一些自定义功能的网站生成器,提供一组用户选择的模板,并且在一个模板中,他可以通过选择不同的组件(导航、关于部分、...)来自定义他的模板

我还会从某个地方抓取数据并将其填充到那些模板中用户将无法在此处修改数据,它已经准备好了所以不需要给用户能够修改将要填写在文档中的数据

【问题讨论】:

    标签: html css ruby-on-rails database ruby-on-rails-4


    【解决方案1】:

    是否有任何最佳实践来存储和呈现这些组件在我的 分贝?

    是的,不要!出于多种原因,主要是您使用数据库来持久存储与模型相关的变量。不是html。 html 的位置在视图中,选择要显示的 html 的位置在控制器中。

    其他原因包括从数据库读取 html 会减慢应用程序的响应速度,Rails 倾向于使数据库 html 中的文本安全,这意味着它不会自动像 html 一样运行。这是一种安全预防措施,因为一种非常常见的攻击是将“坏”代码插入到您的数据库中,然后在您恢复它并将其提供给毫无戒心的用户时运行。

    使用部分。参考this Rails Guide的3.4节

    将用户对组件的选择保存在数据库中。如果他选择 navbar_23,您将这 9 个字符串存储在数据库中,并根据请求为他提供视图文件夹中名为 _navbar_23.html.erb 的部分名称。

    例如,在您的views 文件夹中,创建一个子文件夹views/navbars,在其中放置您的导航栏变体。分音以下划线开头,以 .html.erb 结尾

    在您的模型中,将用户选择的导航栏存储在 user.navbar 中。只是名称,而不是开头的下划线或 .html.erb

    在您的模板中;

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

    Rails 在查找文件时会自动添加下划线和 .html.erb。

    【讨论】:

    • 我知道,但假设我想让用户能够从网站的许多导航栏中进行选择,我唯一的想法是将导航存储在我的数据库中并查询它们,还有其他的吗? (想法,技术,工具,...)我应该搜索?
    • @AbdelrahmanElkady 你可以使用像liquidmarkup.org这样的可编辑标记
    • @HassaninAhmed 如果我需要更改标签中的文本节点,这将有所帮助,但是我想让用户能够更改整个组件(具有其他类和标签的另一种设计)
    • 查找局部视图,这些是 Rails 视图组件,您可以在另一个视图组件中渲染。导航栏、页眉和页脚是局部的经典用例。你不需要其他花哨的技巧:-)
    • 关键是你在创建组件。您需要保存的是用户对数据库中组件的选择,而不是 html。如果他选择 navbar_23,您将这 9 个字符串存储在数据库中,并根据请求为他提供视图文件夹中名为 _navbar_23.erb.html 的部分名称。
    猜你喜欢
    • 1970-01-01
    • 2020-06-18
    • 2021-05-31
    • 1970-01-01
    • 2011-02-08
    • 2018-10-08
    • 2015-04-17
    • 2013-08-27
    • 2011-05-14
    相关资源
    最近更新 更多