换行符不在视图中显示

Cod*_*ama 17 ruby-on-rails ruby-on-rails-3

我有Person.description,下面存储在数据库中:

jnkl

fdsfdsf

fdsf

fsdfdsfs fds fd sf sdf ds

如何在视图中使用换行符显示此内容?它目前显示在一条线上,我不明白为什么.

Abr*_*ram 27

你应该使用simple_format帮助器:

<%= simple_format @person.description %>
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)


ctc*_*rry 26

原因在于,在纯HTML中,除了包含'xmp'之类的标记之外,换行符不会呈现为换行符,因为大多数情况下它们都会被忽略.要让它们显示,您需要使用'br'标签替换它们,或者其他具有与之关联的样式或结构的东西,例如p标签,甚至是div,具体取决于内容.

这应该按照你的要求做:

@person.description.gsub(/\n/, '<br />')
Run Code Online (Sandbox Code Playgroud)

内置的Rails helper simple_format也可以使用p标签工作

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

  • 非常感谢!simple_format正是我追求的 (4认同)

mar*_*maf 6

我也用

@person.description.gsub(/\n/, '<br/>').html_safe 
Run Code Online (Sandbox Code Playgroud)

在视图中显示它们

  • 并且您不担心将数据库中的随机数据标记为 HTML 安全吗? (2认同)