如何在以`pre`元素结尾的Rails的ERB模板中使用`<%=`修剪前导空格?

时间:2018-11-06 07:40:49

标签: ruby-on-rails erb actionview erubis

(据我在这里进行的研究,这不是一个重复的问题。正在为<%--%>而不是{{1 }}。这也可能是Erubi模板引擎中的次要缺陷,Rails正在将其用于ERB模板。)

我想在视图中呈现/语法突出显示的代码,而我的ERB视图模板包含:

<%=

结果是HTML输出为:

<p>
  <strong>Code:</strong>
  <pre class="highlight github">
    <%= highlight(@code.code, @code.language) %>
  </pre>
</p>

由于带有<p> <strong>Code:</strong> <pre class="highlight github"> <span class="kt">[and here's the code, but indented too much]</span> </pre> </p> 标签,因此第一行代码前面的空格包含在HTML中并因此呈现出来,导致第一行代码的行缩进了四个空格。

很明显,我也可以将ERB视图模板制作为:

pre

但这在我的模板视图中看起来很丑(因为缩进已关闭)。

问题:如何使<p> <strong>Code:</strong> <pre class="highlight github"> <%= highlight(@code.code, @code.language) %> </pre> </p> 也吞下前导空格?我知道使用<%=作为结束标记会删除尾随空格/换行符...但是我也希望也删除前导空格(而不仅仅是换行符)。

1 个答案:

答案 0 :(得分:0)

尝试将concat helper method与以<%而不是<%=开头的ERB标签一起使用:

<p>
  <strong>Code:</strong>
  <pre class="highlight github">
    <% concat(highlight(@code.code, @code.language)) %>
  </pre>
</p>