为什么我的字符串仅在我手动输入时才起作用?

时间:2011-10-27 14:02:01

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

这是存储在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>&lt;p&gt;&lt;img src="http://localhost:3000/assets/sa_clubbing_logo.png" alt="Sa_clubbing_logo"&gt;&lt;div&gt;&lt;b&gt;An image&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Another image&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;img src="http://localhost:3000/assets/sa_clubbing_logo.png" alt="Sa_clubbing_logo"&gt;&lt;br&gt;&lt;/b&gt;&lt;/div&gt;&lt;/p&gt;</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 %>时却不行?

我必须在这里遗漏某种格式问题。

1 个答案:

答案 0 :(得分:11)

替换:

<%= @blog_post.content %>

使用:

<%=raw @blog_post.content %>

或者:

<%== @blog_post.content %>

甚至:

<%= @blog_post.content.html_safe %>

说明:

Rails默认保护你,所以你必须告诉你何时考虑html安全。