【问题标题】:Rails DON'T sanitizeRails 不会消毒
【发布时间】:2013-12-05 21:08:05
【问题描述】:

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

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

编辑:

这是用户输入的内容:

这就是它的输出:

【问题讨论】:

  • 这个问题需要更多细节。例如,向我们展示使用缺失标签呈现 HTML 的模板。

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


【解决方案1】:

试试raw 方法。此方法输出不转义字符串

【讨论】:

    【解决方案2】:

    您必须将.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) %>
    

    【讨论】:

      【解决方案3】:

      原来是因为我在删除它时使用了simple_format(),只是简单地调用了&lt;%= @lesson.lesson_content %&gt;,它完美呈现。

      【讨论】:

      • 您确定它实际上返回的是 &amp;lt; 而不是 &amp;lt; 吗? (根据 ace 处理幕后事务的方式,它们可能看起来相同)。
      • @masukomi 是的,我敢肯定,我通过在普通 div 中渲染它来测试它。它以 "" 语音标记呈现全文,因此浏览器将其作为字符串而不是 HTML 逐字阅读。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-29
      相关资源
      最近更新 更多