I have a textarea field where users can enter content. When it comes to displaying their entry on a page, rails returns \n
for each line break, which appears as no break at all for html on the page.
From what I gather, the standard way of getting around this is a .gsub
command, replacing \n
with <br />
, and then a .html_safe
on the end to ensure the <br />
renders.
The problem is, I don't want to html_safe the content - html should still be replaced, but <br />
tags should be injected into the (non-escaped) content.
Suggestions appreciated.
The simple_format
method is good for formatting line breaks. It wraps text blocks in <p>
tags, and converts newline characters into line breaks (<br>
) (double newlines breaks the following text into a second paragraph).
It doesn't however escape other html characters, and instead just allows them. For what you're after a combination of simple_format
along with sanitize should do nicely. Try using this:
<%=raw sanitize(simple_format(@article.body), :tags => %w(br p) ) %>