在 Ruby 中使用 ERB class 时删除模板中的白色 space

Remove white space in templates when using ERB class in Ruby

这是一个简单的 ERB 模板:

# /tmp/test.erb
Hello
<% if (@x) %>
XXX
<% end %>
Goodbye

这是我的 Ruby 渲染代码:

require 'erb'
@x = false
renderer = ERB.new(File.read('/tmp/test.erb'))
output = renderer.result()
print output

这是输出:

Hello

Goodbye

注意空白行。我似乎无法摆脱那多余的白色space。标签 <%--%> 不适用于 ERB.new(我收到错误)。

如何去除白色 space 我正在使用 Ruby 2.3.

嘿,当你想使用 <%- -%> 标签时(这会阻止 if 输出)你必须将 - 传递给 trim_mode 选项 ERB.new 使用它。

参见以下示例:

将您的 test.erb 文件更改为以下代码:

Hello
<% if (@x) -%>
 XXX
<% end -%>
Goodbye

当您实例化 ERB 时,像这样传递选项:

renderer = ERB.new(File.read('test.erb'), nil, '-')

现在,<%- -%> 标签可以正常工作了,希望对您有所帮助!