在textareas中解析换行符而不允许所有html标签

我有一个textarea字段,用户可以在其中输入内容。 当在页面上显示它们的条目时,rails会为每个换行符返回\n ,这对于页面上的html显示为完全没有中断。

从我收集的内容来看,解决这个问题的标准方法是使用.gsub命令,用
替换\n ,然后在末尾.html_safe以确保
渲染。

问题是,我不想html_safe的内容 – html仍然应该被替换,但
标签应该注入(非转义)内容。

建议表示赞赏。

simple_format方法适用于格式化换行符。 它将文本块包装在

标记中,并将换行符转换为换行符(
)(双换行符将以下文本分成第二段)。

但它不会逃避其他html字符,而只是允许它们。 对于你在simple_format和sanitize的组合之后应该做得很好。 试试这个:

<%=raw sanitize(simple_format(@article.body), :tags => %w(br p) ) %>

如果您希望在文本区域中输入的HTML标记可见,但仍希望显示换行符,请尝试以下操作:

 <%= simple_format(h @article.body) %> 

“h”引用所有HTML特殊字符,然后“simple_format”将换行符转换为

根据您的想法,您可以按原样存储\n ,然后在屏幕上显示内容时,使用(h @comment.content).gsub("\n", '
')
,这是首先转义所有HTML标签,然后用\n替换\n

通过使用<pre>可以避免所有这些<pre> 标签。 这具有保留标签的优点。 例如

 <pre><%= @article.body %></pre>