首页 > 解决方案 > Rails -- h.simple_format 修复

问题描述

这是我的代码:

 = h.simple_format(item.text.text, class: 'basic')

并且item.text.text"<p><span style=\"color: rgb(251, 213, 181);\">asdasdasd</span></p>",但是当我看到在检查中呈现的视图时,该style=\"color: rgb(251, 213, 181);\"属性消失了!

如何解决这个问题!(注:我需要class: 'basic'!)

标签: htmlruby-on-railsrubyslim-lang

解决方案


simple_formatfromActionView::Helpers::TextHelper有默认选项sanitize: true

通过将和标记转换为常规文本并删除所有“onxxx”属性来清理 html(以便无法执行任意 Javascript)。它还删除了以“javascript:”开头的 href= 和 src= 属性。您可以通过在加载此模块之前定义 VERBOTEN_TAGS 和 VERBOTEN_ATTRS 来修改要清理的内容。

要防止删除样式属性:

simple_format(item.text.text, { class: 'basic' }, sanitize: false)

<p>inside<p>在所有 HTML 标准中都是无效的,因为开始<p>标签会自动关闭<p>元素:

#item.text.text => "<p><span style=\"color: rgb(251, 213, 181);\">asdasdasd</span></p>"

simple_format(item.text.text, { class: 'basic' }, sanitize: false, wrapper_tag: "div")
#=> "<div class=\"basic\"><p><span style=\"color: rgb(251, 213, 181);\">asdasdasd</span></p><div>"

推荐阅读