在Rails中 - 有一种rails方法将换行符转换为<br/>?

时间:2009-03-04 17:24:21

标签: ruby-on-rails ruby

是否有一种Railsy方式将\ n转换为<br>

目前,我这样做:

mystring.gsub(/\n/, '<br>')

9 个答案:

答案 0 :(得分:245)

是的,rails有simple_format,它正是您正在寻找的,并且稍微好一点,因为它还添加了段落标记。见

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format

示例:

 simple_format(mystring)

请注意,simple_format允许使用基本HTML标记,但也会通过sanitize传递文本,删除所有脚本,因此对用户输入应该是安全的。

答案 1 :(得分:40)

您可以通过以下方式使其更加通用:

mystring.gsub(/(?:\n\r?|\r\n?)/, '<br>')

这样你可以覆盖DOS,* NIX,Mac和意外的无效行结尾。

答案 2 :(得分:28)

在处理用户输入时,请务必小心 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。评价。

答案 3 :(得分:15)

只需使用

white-space: pre-line;

在你的CSS和文本中将换行换行。

答案 4 :(得分:1)

您也可以考虑一下您要尝试做什么 - 如果您很好地格式化了人们输入的文字,您可以考虑使用Markdown之类的过滤器,让您的用户在不打开文字的情况下格式化文字蠕虫是HTML。你知道,就像在Stack Overflow这里一样。

答案 5 :(得分:0)

mystring.gsub(/\r\n|\r|\n/, '\n')

为我工作

答案 6 :(得分:0)

您可以执行html, body, .container { height: 100%; } simple_format(h(text))将确保不呈现任何HTML。

如其他答案中所述,这将比您要求的做更多。它将整个内容包装在h中,如果您在任何地方有双换行符,则会添加更多的段落。

答案 7 :(得分:0)

另一种选择是在 <pre> html5 标签内显示文本。

<块引用>

HTML 元素表示要被格式化的预格式化文本 完全按照 HTML 文件中所写的方式呈现。文本通常是 使用非比例(“等宽”)字体呈现。空白 此元素内部显示为书面形式。

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/pre

答案 8 :(得分:-1)

不。你有什么是常用的替代品。大多数人使用的定义是:

   def nl2br text
       text.gsub(/\n/, '<br/>')
   end

它的名称是因为它模仿了PHP function by the same name的功能。