【问题标题】:Rails: storing erb templates in databaseRails:将erb模板存储在数据库中
【发布时间】:2011-02-09 06:55:29
【问题描述】:

是否可以将erb模板存储在数据库中?怎么样?

【问题讨论】:

    标签: ruby-on-rails erb


    【解决方案1】:

    没错。

    但我认为,如果您只需要一些具有相同布局和不同内容的页面,这不是最好的解决方案。

    如果您真的希望 ERB 保存在数据库中,请使用保存的 ERB 创建一些模型。然后您可以像这样调用控制器代码来渲染该 ERB。

    erb = ERB_model.find(...)
    @some_model_data = SomeModel.find(...)
    erb = ERB.new(erb.source)
    render :text => erb.result, :layout => true (or another)
    

    观看ERB.new 参数。

    【讨论】:

    • 谢谢!我想将 erb 存储在数据库中,因为我的 rails 应用程序中有很多子站点(比如博主有很多博客),并且我不想将 erb 存储在磁盘上。是的,我知道 lliquid 模板,但我需要更多功能引擎,而且我不关心安全性,因为所有子站点都由一个用户(我的客户)控制。但我仍在考虑将模板存储在“app/views/#{site.id}/”等目录中。只是我不想做文件操作......我认为这是错误的......不是rails-way。
    • 我同意你的看法。 DB 方式更多的是 rails-way,因为它需要更少(丑陋)的代码。我刚刚为我的答案添加了一些修复(您可能会在 ERB 中使用布局和一些变量)。
    • 使用这样的东西时最重要的安全问题是什么?我想建立类似的东西,并正在寻找这种方式和使用液体之间的比较。
    【解决方案2】:

    我找到了更好的方法:

    def show
      @modal_popup = ModalPopup.find(params[:id])
      # erb = ERB.new(@modal_popup.content)
      # render :text => erb.result, :layout => false
      render :inline => @modal_popup.content, :layout => false
    end
    

    我在 iframe 中使用此操作或从其他视图呈现此操作。

    【讨论】:

      【解决方案3】:

      我也在研究与您正在研究的几乎相同的概念。我还需要我的客户创建自己的网站

      最初我也有将所有 erb 保存在数据库中的想法,但后来我放弃了这个想法,因为即使它适用于纯文本页面,但当你想要渲染组件和部分时,这并不容易。

      主要是我在数据库中保存 layout.erb 文件时遇到了问题

      所以我决定采用一种页面将在子域上构建的方式

      干杯, 同龄人

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-23
        • 1970-01-01
        • 2014-03-11
        • 1970-01-01
        相关资源
        最近更新 更多