When you want to format only line breaks, you probably do not want simple_format
For outputting a given String in HTML, you mostly want to replace line breaks with
You can use
simple_format, but it has side effects like keeping some HTML.
If you only care about line breaks, you might be better off using a small, specialized helper method:
def format_linebreaks(text) safe_text = h(text) paragraphs = split_paragraphs(safe_text).map(&:html_safe) html = ''.html_safe paragraphs.each do |paragraph| html << content_tag(:p, paragraph) end html end
Full disclosure: Under the hood this uses the private Rails helper method
While it might break when upgrading Rails, you at least don't need to re-implement that part.
- Note that calling
map(&:html_safe)is okay because we escaped the input, and because splitting it won't turn the escaped input unsafe.
- Note that
simple_formathas the niceness to replace