2013-09-09 3 views
2

У меня есть тег text_area, который позволяет пользователю вводить его Bio. Когда пользователь загружается, и если он попадает в режим ввода или возврата, начинается новая строка. Но когда он сохраняет свой ввод, весь текст отображается в одном абзаце. Я хочу, чтобы функциональность была похожа на то, что имеет переполнение стека.Rails: Как сохранить форматированный текст в text_area?

Например - я попал войти в настоящее время

Этот текст в новой строке появляется *

Как я могу это сделать?

This is my code in Rails: 

<%= form_for :profile do |profile| %> 
    <%= profile.text_area :bio %> 

<%= f.submit "Save Bio" %></p> 
<% end %> 
+0

Попробуйте использовать сырье, когда вы показываете код в поле зрения. Он используется для отображения содержимого в формате html. Как <% = raw @text%>. –

ответ

6

Вы должны использовать текстовый редактор, например ckeditor (для упрощения создания веб-контента), а также с точки зрения попробовать simpleformat или raw:

<%= simple_format("Here is some basic text...\n...with a line break.") %> 
<%= raw("Here is some basic text...<br/>...with a line break.") %> 
+3

'simple_format' делает трюк. Нет необходимости в редакторе :) – pratski

+0

Я написал о текстовом редакторе только для упрощения создания веб-контента, если вы добавите больше возможностей пользователям;) – zolter

+0

raw небезопасен, когда данные поступают с входа пользователя – medBo

3

Существует много способов справиться с этим. При отображении текста предварительно занесены в текстовой области вы можете:

  1. заменить символы новой строки с <br/> теги
  2. использования <pre> теги и отображение текста внутри этого тега
  3. разделение текста символами новой строки, а затем обернуть каждый из кусков в <p> тег

При использовании подхода 1 или 3, убедитесь, передать текст через raw помощника, так что отображаются все теги в тексте. Имейте в виду, однако, что пользователь может передать произвольный html внутри текстового поля, поэтому ваш код может подвергаться атакам xss.

+0

# 2 отлично работал для меня с различными тегами \ n и \ r в строке. – nfriend21