ERB中的换行转义序列是什么?

4

我不确定为什么在下面的代码中"\n\n"没有添加两个换行符:

<%= (getparagraph(@geography, "geography")+"\n\n") if @geography != "Other" %> 

为了澄清,getparagraphs方法只返回一个段落的文本。我正试图在Ruby代码中添加两个换行符,而不必使用<br/>。有什么想法吗?我读过的所有内容都表明它应该可以工作。
3个回答

4

您的助手名称中包含“段落”,因此可以将其包装在段落中,并使用CSS在段落周围添加适当的间距:

<% if @geography != "Other" %>
    <p>
      <%= getparagraph(@geography, "geography") %>
    </p>
<% end %>

如果需要在此之后添加额外的间距,您可以始终向<p>添加特殊类:

<% if @geography != "Other" %>
    <p class="geo-chunk">
      <%= getparagraph(@geography, "geography") %>
    </p>
<% end %>

然后在你的 CSS 中:

.geo-chunk {
    margin-bottom: 2em; /* Or whatever works */
}

如果这段文字需要出现在另一个 <p> 元素中,那么你需要稍微调整一下 HTML 的结构,因为不能将块级元素放置在 <p> 元素内:

<div>
    <!-- The old <p> content ... -->
    <% if @geography != "Other" %>
        <div class="geo-chunk">
          <%= getparagraph(@geography, "geography") %>
        </div>
    <% end %>
</div>

非常感谢!我选择了选项1。当然,我没有想到在 if 和 end 语句之间放置 <p> 或 <br> 标签。 - Edward Castano
@Edward:很酷,顺便说一下,我不得不微调选项2。我记得你不能(合法地)在<p>里放置任何块级元素,但这与选项1无关。 - mu is too short

4

您正在输出HTML;在呈现时,空格大部分被忽略。

请使用<br/>标签,并使用.html_safe


1

这是在HTML中吗?如果是的话,只需使用<br>。 HTML会忽略多个空格字符,因此您可以有一个空格或50个换行符,结果都将相同。

另一个注意事项:除非您正在使用XHTML(本身不是一个好主意),否则不要使用自闭合标签,例如<br/>。斜杠无效,因此请省略它。


严格来说,斜杠是有效的,但语义上与您预期的不同。请参见https://dev59.com/nXA75IYBdhLWcg3wm6ax。 - Marnen Laibow-Koser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接