在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>