这是存储在db:
中的确切字符串@blog_post.content = "<p><img src=\"http://localhost:3000/assets/sa_clubbing_logo.png\" alt=\"Sa_clubbing_logo\"><div><b>An image</b></div><div><b><br></b></div><div><b>Another image</b></div><div><b><img src=\"http://localhost:3000/assets/sa_clubbing_logo.png\" alt=\"Sa_clubbing_logo\"><br></b></div></p>"
你可以看到它由一些图像和一些粗体文本组成。
好的,所以我在数据库中保存了html。我试图将html附加到像这样的内容可编辑div(我的富文本编辑器)。
$(document).ready(function(){
$('#rte').append("<%= @blog_post.content %>");
});
它显示在我的内容可编辑div中,但作为实际文本。我希望它呈现为html,以便图像实际显示。似乎附加的html是这样的:
<p><p><img src="http://localhost:3000/assets/sa_clubbing_logo.png" alt="Sa_clubbing_logo"><div><b>An image</b></div><div><b><br></b></div><div><b>Another image</b></div><div><b><img src="http://localhost:3000/assets/sa_clubbing_logo.png" alt="Sa_clubbing_logo"><br></b></div></p></p>
所以我尝试手动将字符串放入append方法中,我得到了我想要的内容:
$(document).ready(function(){
$('#rte').append("<p><img src=\"http://localhost:3000/assets/sa_clubbing_logo.png\" alt=\"Sa_clubbing_logo\"><div><b>An image</b></div><div><b><br></b></div><div><b>Another image</b></div><div><b><img src=\"http://localhost:3000/assets/sa_clubbing_logo.png\" alt=\"Sa_clubbing_logo\"><br></b></div></p>");
});
这里附加的HTML是:
<p><img src="http://localhost:3000/assets/sa_clubbing_logo.png" alt="Sa_clubbing_logo"></p><div><b>An image</b></div><div><b><br></b></div><div><b>Another image</b></div><div><b><img src="http://localhost:3000/assets/sa_clubbing_logo.png" alt="Sa_clubbing_logo"><br></b></div><p></p>
图像以我想象的方式显示在我的编辑器中。
为什么我手动插入字符串时会这样做,但是当我使用<%= @blog_posts.content %>
时却不行?
我必须在这里遗漏某种格式问题。
答案 0 :(得分:11)
替换:
<%= @blog_post.content %>
使用:
<%=raw @blog_post.content %>
或者:
<%== @blog_post.content %>
甚至:
<%= @blog_post.content.html_safe %>
说明:
Rails默认保护你,所以你必须告诉你何时考虑html安全。