代码之家  ›  专栏  ›  技术社区  ›  rlandster

在Ruby中使用erb类时删除模板中的空白

  •  1
  • rlandster  · 技术社区  · 7 年前

    下面是一个简单的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 回复  |  直到 7 年前
        1
  •  3
  •   Dimitrius Lachi    7 年前

    干草,当你想使用 <%- -%> 标签(这样可以防止 if 输出)必须通过 - trim_mode 选择权 ERB.new 使用它。

    请参见以下示例:

    改变你 test.erb 文件到以下代码:

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

    当你实例 ERB ,按如下方式传递选项:

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

    现在, <%-%-gt; 标签会很好的工作,希望这有帮助!