如何允许ERB输出中的换行符

时间:2011-11-07 14:31:01

标签: ruby-on-rails erb

我正在尝试在<p>元素中显示数据库中字段的内容。在html.erb模板中,代码如下所示:

<p><%= front.gsub(/(\r)?\n/, "<br>") %></p> ...

我遇到的问题是为了逃避中断,我必须在上面的gsub末尾应用.html_safe方法,但这样做会打开整个应用程序来进行XSS攻击。我怎样只允许转义中断?

3 个答案:

答案 0 :(得分:8)

您可以使用simple_format方法。

<%= simple_format(front) %>

更多此处=&gt; http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format

答案 1 :(得分:2)

这是基于simple_format助手。我们可以使用sanitize删除允许XSS攻击的错误标记。

<%= sanitize(front).gsub(/(\r)?\n/, "<br/>").html_safe %>

如果要在使用<br>替换新行之前删除所有HTML标记,也可以使用strip_tags

<%= strip_tags(front).gsub(/(\r)?\n/, "<br/>").html_safe %>

答案 2 :(得分:2)

您是否考虑过将文字包装成<pre> - 标签?这将保持基本格式(换行符,空格......)。