如何消除erb中的换行符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何消除erb中的换行符相关的知识,希望对你有一定的参考价值。
我正在尝试将ERB与纯文本文件一起使用。这是纯文本文件的内容:
<% if true %>
<%= 'bar' %>
<% end %>
<%= 'foo' %>
<%= 'bar' %>
我通过ERB获得的结果是:
bar
foo
bar
我想得到的结果是:
bar
foo
bar
在“ bar”和“ foo”之前没有空换行符。
现在,我知道这是因为ERB被配置为(默认情况下)可用于html文件。我要的是在我的情况下使用纯文本文件。我知道这是“某种程度上”的可能,因为在Rails中,当您使用Rails邮件程序配置纯文本文件时,不会发生这种情况。
这是我要执行的操作的全景图:我正在尝试编写纯文本文章,但是中间有一些Ruby代码。我以为我会为此使用ERB,但是我得到的第一个绊脚石就是这个。
答案
在它的默认模式下,ERB在<% ... %>
表达式之外将字面值视为非常字面值。因此,可以将您的文本视为流,如下所示:
<% if true %><LF><%= 'bar' %><LF><% end %><LF><%= 'foo' %><LF><%= 'bar' %><LF>
如您所见,您将在“ bar”之前获得换行符,在“ foo”之前获得两个换行符。 即,输出将是:
<blank line>
bar
<blank line>
foo
bar
解决方法是对erb
使用“修剪模式”选项。将文件写为:
<% if true -%>
<%= 'bar' %>
<% end -%>
<%= 'foo' %>
<%= 'bar' %>
然后呼叫erb -T - your_erb_file.erb
bar
foo
bar
-T -
告诉erb
如果行以-%>
结尾,则删除行尾。如果erb
指令以<%-
开头,则前导空格将被删除。有关详细信息,请参见此manual page for erb
。
以上是关于如何消除erb中的换行符的主要内容,如果未能解决你的问题,请参考以下文章