Preserve newline in text area with Ruby on Rails

前端 未结 2 1741
没有蜡笔的小新
没有蜡笔的小新 2020-12-15 20:52

To practice Ruby on Rails, I am creating a blog which includes a text area (following Mackenzie Child\'s tutorial). When the text is submitted, all of the newlines are remov

相关标签:
2条回答
  • 2020-12-15 20:58

    An easier (and dare I say better) way to handle this is to apply this CSS style to the paragraph or similar HTML element that you use to display user input inside of.

    white-space: pre-wrap;
    

    One advantage is this will persevere newlines just like simple_format without adding the extra formatting that it applies, such as turning two consecutive newlines characters into a paragraph element or automatically adding newlines to the end of the content. Just switched from using simple_format to this myself in a similar project. Way more predictable.

    0 讨论(0)
  • 2020-12-15 21:05

    Newlines are actually being preserved(as \r\n), you just don't see them in your index/show views.

    In these views, call simple_format on your post.body field to replace \ns with <br>s(HTML newlines):

    simple_format(post.body)
    

    From docs:

    simple_format(text, html_options = {}, options = {}) public
    
    Returns text transformed into HTML using simple formatting rules.
    Two or more consecutive newlines(\n\n) are considered as a paragraph and wrapped 
    in <p> tags. One newline (\n) is considered as a linebreak and a <br /> tag is 
    appended. This method does not remove the newlines from the text.
    
    0 讨论(0)
提交回复
热议问题