\ n ERB中的新行转义序列

时间:2011-11-11 18:01:19

标签: ruby escaping ruby-on-rails-3.1 erb line-breaks

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

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

为了澄清方法,getparagraphs只返回一段文字。我试图在Ruby代码中添加两个换行符,而不必使用<br/>

有什么想法吗?我读过的所有内容都暗示它应该有效。

3 个答案:

答案 0 :(得分:4)

你的助手有&#34;段&#34;在它的名字中,也许你应该将它包装在一个段落中并使用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 :(得分:3)

您正在输出HTML;渲染时很大程度上忽略了空格。

改为使用<br/>代码和.html_safe

答案 2 :(得分:1)

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

另一个注意事项:除非您使用XHTML(本身并不是一个好主意),否则使用自我结束标记,例如<br/>。斜杠无效,因此省略它。