我正在使用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),我应该寻找什么?
答案 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>"