我想延長ERB所以每一個輸出標籤 - <%=%> - 含量的結果被呈現之前被預處理。如何延長ERB模板
例如,
<%= 'test' %>
現在應該呈現的
!test!
代替
test
我怎樣才能做到這一點?
我想延長ERB所以每一個輸出標籤 - <%=%> - 含量的結果被呈現之前被預處理。如何延長ERB模板
例如,
<%= 'test' %>
現在應該呈現的
!test!
代替
test
我怎樣才能做到這一點?
像這樣的事情? (未經測試)
require 'erb'
template = File.read(template_file)
template.gsub!(/<%=(.*?)%>/, '!\1!')
erb = ERB.new(template)
result = erb.result
有做,沒有直接的方法。也許你可以定義:
class String; def bang; "!#{self}!" end end
,做
<%= "test".bang %>
感謝您的回答。這種方法的問題是我打算從同一個模板生成2個不同的輸出。每個人都應該是HTML,另一個是在愛普生打印的ESC/POS格式的文本文件稅控打印機 – Gus
不錯,我想我能做到template.gsub!(/ <%=.*?=> /,「預處理(\ 1)」),並添加預處理(內容)方法到bindind。我現在就試試這個。 – Gus
我想你的意思是template.gsub!(/ <%=(.*)%> /,'<%=!\1!%>')。問題在於同一行<%=function%><%=function%>中的兩個方法調用被<%=!function%><%= function!%>所取代,因爲regex是貪婪的。 – Gus
我想我可以排除字符<>%來自於正則表達式 -/<%=([^<>%] *)%>/- ,但我會只允許他們引號內時。 – Gus