我有一个字符串模板,如下图所示评估字符串模板
template = '<p class="foo">#{content}</p>'
我想基于称为content
变量的当前值来评估模板。
html = my_eval(template, "Hello World")
这是我目前对这个问题的办法:
def my_eval template, content
"\"#{template.gsub('"', '\"')}\"" # gsub to escape the quotes
end
是否有解决这个问题的一个更好的办法?
EDIT我用HTML片段在上面的示例代码以证明我的方案。我的真实场景是在配置文件中设置了XPATH模板。模板中的绑定变量将被替换以获取有效的XPATH字符串。
我曾考虑过使用ERB,但由于它可能是一个矫枉过正的决定。
我在模板中使用HTML片段来演示场景。我有一堆需要替换的XPATH字符串。我曾想过使用ERB,但我想要一些轻量级的东西。 – 2010-02-23 21:35:06
我必须说这是一个有趣的解决方案。我必须在rake任务中运行我的代码。所以这个解决方案可能需要一些调整。 – 2010-02-23 21:52:57
如果你正在谈论rake任务,你最好使用Erb.new而不是ActionController#render。解决方案更新以反映这一点 – EmFi 2010-02-23 22:02:59