Rails不要消毒

时间:2013-12-05 21:08:05

标签: ruby-on-rails ruby-on-rails-4 sanitize ace-editor

我正在制作一个集成了Ace在线IDE的网络应用程序。用户通过Ace IDE输入输入,然后存储在数据库中。但是当从数据库中呈现时,Rails已经进行了某种清理,并且没有加载HTML标记。

如何明确告诉Rails将所有HTML标记保留在标记中而不格式化(包括标签和空格)?

编辑:

这是用户输入的内容:

enter image description here

这就是它的输出:

enter image description here

3 个答案:

答案 0 :(得分:2)

尝试使用raw方法。此方法输出而不转义字符串

答案 1 :(得分:1)

您必须将.html_safe附加到您要返回视图的任何字符串中。默认情况下,Rails不信任用户可能创建的任何内容。

所以

 <%= @my_source_code_from_the_db %>

变为

<%= @my_source_code_from_the_db.html_safe %>

正如@Sam_D所提到的,另一种选择是将你的字符串包装在对raw:

的调用中
<%= raw(@my_source_code_from_the_db) %>

答案 2 :(得分:0)

原来是因为我删除了simple_format(),只是简单地调用<%= @lesson.lesson_content %>它就完美呈现了。