Rails 4:如何在text_area中插入换行符?

时间:2015-12-18 17:51:12

标签: ruby-on-rails posts

我在rails中创建了一个博客。我是一个初学者并且相当远,但现在我仍然坚持一个看似微不足道的细节:我似乎无法格式化帖子(文章)。

这是我show.html.erb的相关部分:

<p>
  <strong>Content:</strong>
  <%= simple_format (@article.content) %>
</p>

当我写东西并插入html标签时,它们不会被识别出来。我究竟做错了什么?

3 个答案:

答案 0 :(得分:0)

Rails会自动删除html标记,以防止有人将代码注入您的网页(例如恶意javascript)

如果您的用户无法将数据输入@article.content并且它始终是安全的,那么您可以使用html_safe方法将其标记为安全。

<%= (simple_format (@article.content)).html_safe %>

答案 1 :(得分:0)

您可以发布文章内容以供参考吗?如果我不得不猜测,我想象Rails正在逃避html标签并将它们作为纯文本插入(所以输出看起来像:文章内容!

看看Rails&#39;帮助方法,如content_tag(http://apidock.com/rails/ActionView/Helpers/TagHelper/content_tag)和concat(http://apidock.com/rails/ActionView/Helpers/TextHelper/concat),并考虑使用它们来帮助生成适当的html标记。

需要关注的一个问题是谁将提供内容。例如,如果您正在编写其他人将使用的应用程序,您需要确保任何html都为您提供 转义以避免XSS攻击。在这种情况下,您将花一些时间阅读有关如何正确清理用户输入的信息。

答案 2 :(得分:0)

您现在可以指定它包含的标记(默认为p),如下所示:

  <%= simple_format (@article.content, {}, wrapper_tag: "div") %>

添加white-space: pre-line样式。

它将在用户输入中将\ r或\ n(输入)显示为新行。

了解更多信息: http://apidock.com/rails/v4.0.2/ActionView/Helpers/TextHelper/simple_format