在Ruby中使用ERB类时,请删除模板中的空白

时间:2019-01-15 19:16:38

标签: ruby erb

这是一个简单的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

请注意空白行。我似乎无法摆脱多余的空白。标签<%--%>不能与ERB.new一起使用(出现错误)。

我如何摆脱空白 我正在使用Ruby 2.3。

1 个答案:

答案 0 :(得分:3)

嗨,当您想使用<%- -%>标签(这会阻止if输出)时,您必须将-传递给trim_mode的{​​{1}}选项使用它。

请参见以下示例:

将您的ERB.new文件更改为以下代码:

test.erb

实例Hello <% if (@x) -%> XXX <% end -%> Goodbye 时,传递如下选项:

ERB

现在,renderer = ERB.new(File.read('test.erb'), nil, '-') 标签可以正常工作,希望对您有所帮助!