Har*_*tty 8 ruby ruby-on-rails
我有一个字符串模板,如下所示
template = '<p class="foo">#{content}</p>'
Run Code Online (Sandbox Code Playgroud)
我想根据被调用变量的当前值来评估模板content.
html = my_eval(template, "Hello World")
Run Code Online (Sandbox Code Playgroud)
这是我目前解决此问题的方法:
def my_eval template, content
"\"#{template.gsub('"', '\"')}\"" # gsub to escape the quotes
end
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来解决这个问题?
我在上面的示例代码中使用了HTML片段来演示我的场景.我的真实场景在配置文件中有一组XPATH模板.替换模板中的绑定变量以获取有效的XPATH字符串.
我曾考虑过使用再培训局,但决定反对,因为这可能是一种过度杀伤力.
小智 21
您可以使用String的本机方法'%'来执行您想要的操作:
> template = "<p class='foo'>%s</p>"
> content = 'value of content'
> output = template % content
> puts output
=> "<p class='foo'>value of content</p>"
Run Code Online (Sandbox Code Playgroud)
请参见http://ruby-doc.org/core/classes/String.html#M000770
EmF*_*mFi 11
您可以将字符串呈现为erb模板.看到你在rake任务中使用它,你最好使用Erb.new.
template = '<p class="foo"><%=content%></p>'
html = Erb.new(template).result(binding)
Run Code Online (Sandbox Code Playgroud)
使用最初建议的ActionController方法,涉及实例化ActionController :: Base对象并发送render或render_to_string.
| 归档时间: |
|
| 查看次数: |
8372 次 |
| 最近记录: |