ruby-on-rails - 评估字符串模板

标签 ruby-on-rails ruby

我有一个如下所示的字符串模板

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

有没有更好的方法来解决这个问题?

编辑

我在上面的示例代码中使用了 HTML 片段来演示我的场景。我的真实场景在配置文件中有一组 XPATH 模板。替换模板中的绑定(bind)变量以获得有效的 XPATH 字符串。

我曾考虑过使用 ERB,但最终还是放弃了,因为它可能有点矫枉过正。

最佳答案

您可以使用 String 的本地方法 '%' 做您想做的事:

> template = "<p class='foo'>%s</p>"
> content = 'value of content'
> output = template % content
> puts output
=> "<p class='foo'>value of content</p>"

参见 http://ruby-doc.org/core/classes/String.html#M000770

关于ruby-on-rails - 评估字符串模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2321428/

相关文章:

ruby-on-rails - 延迟插入 rails

ruby-on-rails - 启动heroku延迟工作 worker

Ruby Nokogiri 将 KML 转换为 CSV

ruby - 发出网络请求时,什么时候应该使用线程与进程?

ruby - 如何使用 ruby​​ 中外部文件的代码执行本地函数?

Ruby 语法问题 : Rational(a, b) 和 Rational.new!(a, b)

javascript - 如何验证在tinymce(gem)编辑器rails应用程序中输入的字符数

ruby-on-rails - rails 选择带有多个预选值的标签

ruby-on-rails - 在 ruby​​ 中运行多个命令行

javascript - 在 js.erb 中生成的 JSON 对象中转义引号