【发布时间】:2021-08-18 01:55:30
【问题描述】:
我正在尝试清除 mailto 链接,同时允许其他人使用 Rails::HTML Scrubbers。
见:https://github.com/rails/rails-html-sanitizer
我有一个像这样的Loofah 片段:
Loofah.fragment('<a href="mailto:e@example.test">tis but a scratch</a>')
我的 Scrubber 是这样的:
class TargetedHtmlScrubber < Rails::Html::TargetScrubber
def initialize
super
self.tags = %w[a]
end
def allowed_node?(node)
...
end
def scrub_attribute?(name)
...
end
end
但是当我在我的规范中运行scrub! 时,我看不到任何allowed_node? 或scrub_attribute 方法被按照documentation 调用。
我的规格是这样的。它擦洗一切..,.
require 'rails_helper'
RSpec.describe TargetedHtmlScrubber do
describe 'targeting html tags' do
it 'ignores <a>' do
fragment = html_fragment('<a href="http://example.test">Greg! the stop sign!!</a>')
expect(
fragment.scrub!(subject).to_s
).to eq '<a href="http://example.test">Greg! the stop sign!!</a>'
end
it 'targets <a href=mailto:>' do
fragment = html_fragment('<a href="mailto:e@example.test">tis but a scratch</a>')
expect(
fragment.scrub!(subject).to_s
).to eq 'tis but a scratch'
end
end
end
我希望在我的类中的两种方法之一中实现一些东西。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-6