我的Person.description存储在数据库中:
jnkl
fdsfdsf
fdsf
fsdfdsfs fds fd sf sdf ds
如何在视图中使用换行符显示?它目前显示在一条线上,我不明白为什么。
答案 0 :(得分:26)
原因在于,在纯HTML中,除了包含'xmp'之类的标记之外,换行符不会呈现为换行符,因为大多数情况下它们都会被忽略。要让它们显示出来,您需要使用'br'标签或其他具有与之关联的样式或结构的内容替换它们,例如p标签,甚至是div,具体取决于内容。
这应该按照你的要求行事:
@person.description.gsub(/\n/, '<br />')
内置的Rails帮助程序simple_format也可以使用p标记
http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
答案 1 :(得分:24)
你应该使用simple_format帮助器:
<%= simple_format @person.description %>
http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
# File actionview/lib/action_view/helpers/text_helper.rb, line 301
def simple_format(text, html_options = {}, options = {})
wrapper_tag = options.fetch(:wrapper_tag, :p)
text = sanitize(text) if options.fetch(:sanitize, true)
paragraphs = split_paragraphs(text)
if paragraphs.empty?
content_tag(wrapper_tag, nil, html_options)
else
paragraphs.map! { |paragraph|
content_tag(wrapper_tag, raw(paragraph), html_options)
}.join("\n\n").html_safe
end
end
答案 2 :(得分:4)
我也用
@person.description.gsub(/\n/, '<br/>').html_safe
在视图中显示它们
答案 3 :(得分:1)
不是将\ n替换为<br>
标记,而是使用css white-space: pre
在\ n上换行。
来源:An html tag other than a textarea where \n is correctly interpreted
答案 4 :(得分:0)
simple_format 不适合我的需要,因为我希望能够显示多个换行符。 simple_format 使一个段落有 2 个或更多换行符。
所以,我改用了 css white-space: break-spaces;
。目前唯一的缺点是浏览器支持率现在是 89.5%。