Ruby on rails 3.2 Rails:使用ckeditor提交的内容显示为html标记

Ruby on rails 3.2 Rails:使用ckeditor提交的内容显示为html标记,ruby-on-rails-3.2,ckeditor,Ruby On Rails 3.2,Ckeditor,我有一个文本字段,用户将在其中编写食物项目的配方。对于文本格式,我只需安装ckeditor 在gemfile中添加gem“ckeditor”,并执行以下操作: rails generate ckeditor:install --orm=active_record --backend=paperclip 如github.com/galetahub/ckeditor所示 然后,我将我的配方文本区域更新为: <%= f.cktext_area :recipe, :size =>

我有一个文本字段,用户将在其中编写食物项目的配方。对于文本格式,我只需安装ckeditor

在gemfile中添加gem“ckeditor”,并执行以下操作:

   rails generate ckeditor:install --orm=active_record --backend=paperclip
如github.com/galetahub/ckeditor所示

然后,我将我的配方文本区域更新为:

   <%= f.cktext_area :recipe, :size => 5, :id => "field-area5", :ckeditor => {:language => "us"}  %>
5,:id=>“field-area5”,:ckeditor=>{:language=>“us”}%>
它显示所有格式工具并正确设置文本格式。但是当我提交内容并使用

   <%= @product.recipe %>

它显示为HTML标记,而不是我格式化的方式。e、 g

  <p><strong>Recipe</strong></p> <h1><span style="font-family:georgia,serif"><em>i dont know anything</em></span></h1> 
食谱我什么都不知道 有人能解释为什么会发生这种情况吗?如何显示格式化内容?谢谢你的帮助


谢谢。

您尝试过以下方法吗


查看此处了解更多信息:

它正在工作!但您共享的文档说“如果数据来自用户输入,则不建议这样做。”因为我显示的数据来自用户输入。那么使用“生的”是好方法吗?是的!我认为你需要做两件事。首先,您需要在将所有用户输入保存到数据库之前对其进行清理。Rails有一个助手来完成这项工作,名为
sanitize
(这里的文档:),或者您可以使用类似“sanitize”的gem:我建议您使用gem并查看文档中的示例。第二,一旦你有了经过消毒/清洁的html,那么在视图中释放它时,使用
raw()
应该是安全的!不知道如何使用消毒宝石。你的意思是,应该是在安装gem之后?或者没有gem。试试
html\u safe
和使用
raw
一样糟糕。这个问题与跨站点脚本有关。Ckeditor包括样式和html标记,要显示这些样式和html标记,您需要呈现未显示的内容。但是,您需要确保内容不包含危险内容。危险内容,如
'onclick='
或下载并安装恶意软件的链接等。这就是
sanitize
的用武之地。可以使用sanitize helper方法剥离某些标记和标记属性。结果是一个
SafeBuffer
,它应该在不需要
raw
html\u safe