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

Pla*_*Ton 5 escaping ruby-on-rails html-safe

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

从我所收集,解决这个得到的标准方法是一个.gsub命令,替换\n<br />,然后.html_safe就结束,以确保<br />呈现.

问题是,我不想html_safe内容 - 仍然应该替换html,但<br />标签应该注入(非转义)内容.

建议表示赞赏.

Jer*_*emy 16

simple_format方法适用于格式化换行符.它将文本块包装在<p>标记中,并将换行符转换为换行符(<br>)(双换行符将以下文本分成第二段).

但它不会逃避其他html字符,而只是允许它们.对于你simple_formatsanitize结合使用后应该做得很好.试试这个:

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

  • 或者更好的是,使用内置的`h()`方法:`<%= simple_format h @ article.body%>` (4认同)

And*_*erg 6

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

<%= simple_format(h @article.body) %>
Run Code Online (Sandbox Code Playgroud)

"h"引用所有HTML特殊字符,然后"simple_format"将换行符转换为<br>.