【问题标题】:Generate dynamic ERB templates?生成动态 ERB 模板?
【发布时间】:2014-10-07 05:15:58
【问题描述】:

我正在使用 ERB 来生成 HTML sn-ps。所以我有一个看起来像这样的 (html.erb) 模板:

<html><head><title>Artsy</title></head>
  <body>
    <div id='name-container'>
      <%= @name %>
    </div>
  </body>
</html>

在渲染之后,它最终看起来像这样:

<html><head><title>Artsy</title></head>
  <body>
    <div id='name-container'>
      Johnny
    </div>
  </body>
</html>

我有几个相关的问题:

假设我希望用户能够以可视方式修改 ERB 模板,例如,他可以将带有id = 'name-container' 的容器移动到模板的另一部分。为了做到这一点,我应该研究什么?

ERB 是 Ruby 的模板引擎,我使用它是因为我拥有的值来自 Ruby 应用程序。但是,如果我想研究如何做到这一点的替代方案(拥有一个模板并能够传递它所期望的参数,例如@name),我应该寻找什么?

【问题讨论】:

    标签: ruby erb


    【解决方案1】:

    用户可编辑的 erb 模板是个坏主意,因为它们根本没有沙盒:用户可以轻松地编写具有破坏性副作用的 erb(无论有意还是无意),或者最终依赖于您想要更改的应用程序的各个方面。

    使用为此目的设计的模板语言,例如liquid

    【讨论】:

    • Frederick Cheung,这正是我正在寻找的答案。我没能找到我应该用谷歌搜索的内容:它会是动态模板语言吗?请注意,我可以是语言不可知论者,它不一定是 Ruby。
    • 谷歌搜索模板语言可能会做到这一点 - 没有太多你无法筛选的语言
    【解决方案2】:

    使用我开发的dom gem,您可以直接从 Ruby 代码创建 HTML 字符串。使用它,您可以执行以下操作:

    require "dom"
    ["foo".dom(:span, class: "bold"), "bar"].dom(:div).dom(:body).dom(:html)
    # => "<html><body><div><span class=\"bold\">foo</span>bar</div></body></html>"
    

    【讨论】:

      猜你喜欢
      • 2016-05-24
      • 2013-03-29
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      • 2019-12-10
      • 2014-06-20
      • 2015-11-23
      • 2011-01-09
      相关资源
      最近更新 更多