I figured out a hacky way to do it, please give a better solution if one is available.
(This should be able to go in the model, but its not working so I put it in the view until someone can help me with that)
def wrap(s, width=78)
s.gsub(/(.{1,#{width}})(\s+|\Z)/, "\\1<br>").html_safe
end
Here's the view:
<%= wrap(skill.description.to_s, 65) %>
Note in the Regex I changed the \n to a
which is sort of like a newline equivalent in an html page, then I made html work by adding the .html_safe. again it seems messy but it works.