我在rails中创建了一个博客。我是一个初学者并且相当远,但现在我仍然坚持一个看似微不足道的细节:我似乎无法格式化帖子(文章)。
这是我show.html.erb的相关部分:
<p>
<strong>Content:</strong>
<%= simple_format (@article.content) %>
</p>
当我写东西并插入html标签时,它们不会被识别出来。我究竟做错了什么?
答案 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