Answers:
是的,rails simple_format
可以完全满足您的需求,并且由于它还添加了段落标签,因此效果略好。看到
http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
例:
simple_format(mystring)
注意,它simple_format
允许基本的HTML标记,但也可以传递文本来sanitize
删除所有脚本,因此对于用户输入来说应该是安全的。
simple_format
自动将提供的文本包装在<p>
标签中,并且无法避免此功能。
javascript:alert(\no!\)
参考资料中所述。恶意黑客可能会有无尽的变化和将来的变化。
wrapper_tag
选项允许改变<p>
标签为别的
您可以通过以下方法使其更通用:
mystring.gsub(/(?:\n\r?|\r\n?)/, '<br>')
这样,您将涵盖DOS,* NIX,Mac和意外的无效行结尾。
simple_format
可以在该正则表达式上进行拆分,请使用map
将字符串包装在开始和结束p
标记中,然后再将它们连接起来。 mystring.split(/(?:\n\r?|\r\n?)/).map {|s| "<p>#{s}</p>"}.join
应该做,尽管我没有测试。
<%= sanitize(planning.benefits.split(/(?:\n\r?|\r\n?)/).map {|x| "<li class='collection-item'>#{x}</li>"}.join) %>
。它就像一个魅力嘘声!
mystring
可能包含任意HTML。
在处理用户输入时,应对此谨慎。
simple_format
插入<br>
标签,但将允许其他html标签!
当使用simple_format时,<b>Hello</b>
将呈现为“ Hello ”,您可能不希望这样做。
相反,您可以使用首先<%= h(c.text).gsub("\n", "<br>").html_safe %>
h()
将html编码,gsub
替换换行符并html_safe
允许<br>
显示标签。
这将准确显示用户输入的内容。它还允许在评论中讨论html。
simple_format
允许使用基本的HTML标签,但要注意的是,它还会通过传递文本sanitize
,从而删除了可能有害的所有内容。 apidock.com/rails/ActionView/Helpers/TextHelper/simple_format
不。您所拥有的是常用的替代方法。大多数人使用的定义是:
def nl2br text
text.gsub(/\n/, '<br/>')
end
mystring.gsub(/\r\n|\r|\n/, '\n')
为我工作