我用rails创建了一个博客。我是一个初学者,走得很远,但现在我被一个看似次要的细节所困:我似乎不能格式化帖子(文章)。
下面是我的show.html.erb的相关部分:
<p>
<strong>Content:</strong>
<%= simple_format (@article.content) %>
</p>当我写一些东西并插入html标签时,它们不会被识别出来。我做错了什么?
发布于 2015-12-19 01:58:17
Rails将自动删除html标签,以防止有人向您的网页注入代码(例如恶意javascript)。
如果您的用户不能将数据输入到@article.content中,并且它始终是安全的,那么您可以使用html_safe方法将其标记为安全。
<%= (simple_format (@article.content)).html_safe %>发布于 2015-12-19 01:59:12
你能发布文章内容以供参考吗?如果我必须猜测,我会认为Rails正在转义html标记,并将它们作为纯文本插入(因此输出如下:文章内容!
看看Rails的帮助器方法,如content_tag (http://apidock.com/rails/ActionView/Helpers/TagHelper/content_tag)和concat (http://apidock.com/rails/ActionView/Helpers/TextHelper/concat),并考虑使用它们来帮助生成适当的html标记。
一个需要关注的问题是谁将提供内容。例如,如果你正在编写一个其他人将会使用的应用程序,你需要确保给你的任何html都被转义,以避免XSS攻击。在这种情况下,您需要花一些时间阅读有关如何正确清理用户输入的内容。
发布于 2015-12-19 02:05:11
您现在可以指定包装它的标签(默认为p),如下所示:
<%= simple_format (@article.content, {}, wrapper_tag: "div") %>或
添加white-space: pre-line样式。
它将在用户输入中显示\r或\n (enter)作为新行。
有关更多信息,请访问:http://apidock.com/rails/v4.0.2/ActionView/Helpers/TextHelper/simple_format
https://stackoverflow.com/questions/34361283
复制相似问题