生成动态ERB模板?

时间:2014-08-13 17:59:25

标签: ruby erb

我正在使用ERB来生成HTML代码段。所以我有一个(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),我应该寻找什么?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

使用我开发的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>"
相关问题