我想扩展 ERB,以便在呈现结果之前对每个输出标签 - <%= %> - 内容进行预处理。
例如,
<%= 'test' %>
现在应该渲染
!test!
代替
test
我怎样才能做到这一点 ?
没有直接的方法可以做到这一点。也许你可以定义:
class String; def bang; "!#{self}!" end end
做
<%= "test".bang %>
像这样的东西?(未经测试)
require 'erb'
template = File.read(template_file)
template.gsub!(/<%=(.*?)%>/, '!\1!')
erb = ERB.new(template)
result = erb.result