在Rails中清理助手

时间:2015-09-13 18:50:47

标签: ruby-on-rails ruby sanitize

你能解释一下吗

2.1.3 :015 > ActionController::Base.helpers.sanitize '<b>test</b>'
 => "<b>test</b>" 

结果与文档http://apidock.com/rails/ActionView/Helpers/SanitizeHelper/sanitize

中所说的不一样

但这是正确的

2.1.3 :017 > ActionController::Base.helpers.sanitize('<b>test</b>', tags: [])
 => "test"

我的配置中没有WhiteListSanitizer。也许Rails默认有任何WhiteListSanitizer?我该怎么找到它?或者也许我有些不明白的事情?

1 个答案:

答案 0 :(得分:5)

实际上,它的工作方式与您期望的完全相同。 sanitize帮助程序旨在保留良性html标记并删除可能有害的标记。

ActionController::Base.helpers.sanitize("<b>test</b>")
=> "<b>test</b>" 

ActionController::Base.helpers.sanitize("<script>test</script>")
=> "" 

您可以在config/application.rb中调整清理方法的全局设置。

config.action_view.sanitized_allowed_tags = ['b']

然后你得到:

ActionController::Base.helpers.sanitize("<b>test</b>")
=> "test"