結果がレンダリングされる前に、すべての出力タグ (<%= %>) のコンテンツが前処理されるように、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