Rails:如何在text_area中保存格式化文本?

时间:2013-09-09 06:23:45

标签: ruby-on-rails ruby-on-rails-3

我有一个text_area标签,允许用户输入他的Bio。当用户敲打并且如果他命中输入或返回时,则开始换行。但是当他保存输入时,所有文本都显示在一个段落中。我想要的功能类似于堆栈溢出。

例如 - 我现在点击进入

此文字显示在新行*

我该怎么做?

This is my code in Rails:

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

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

2 个答案:

答案 0 :(得分:7)

您应该使用文本编辑器,例如ckeditor(以简化网页内容创建),并在视图中尝试simpleformatraw

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

答案 1 :(得分:4)

有很多方法可以解决这个问题。当显示先前在文本区域中输入的文本时,您可以:

  1. 使用<br/>标记替换换行符
  2. 使用<pre>标记并在该标记内显示文字
  3. 按换行符分割文本,然后将每个块包装到<p>标记
  4. 使用方法1或3时,请确保通过raw帮助程序传递文本,以便显示文本中的任何标记。但请注意,该用户可能会在textarea中传递任意html,因此您的代码可能会受到xss攻击。