In Rails - is there a rails method to convert newlines to <br>?

Yes, rails has simple_format which does exactly what you are looking for, and slightly better since it also adds paragraph tags. See

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

Example:

 simple_format(mystring)

Note that simple_format allows basic HTML tags, but also passes text through sanitize which removes all scripts, so it should be safe for user input.


You may make it more general by doing:

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

This way you would cover DOS, *NIX, Mac and accidental invalid line endings.


You should be careful with this when you are dealing with user input.
simple_format inserts <br> tags but it will allow other html tags!

When using simple_format, <b>Hello</b> will be rendered as "Hello", you might not want this.

Instead you can use <%= h(c.text).gsub("\n", "<br>").html_safe %>
h() will encode the html first, gsub replaces the line break and html_safe allows the <br> tags to be displayed.

This will display exactly what the user entered. It also allows to discuss html in e.g. comments.