如果使用 Rails::Html::PermitScrubber 并且沒有為標簽或屬性指定值,則默認使用 Loofah::HTML5::Scrub 中的合理默認值。但是,一旦您設定標簽或屬性,它就會選擇一個完全不同的代碼路徑,忽略這些默認值。
我想從 Rails::Html::PermitScrubber 提供的默認功能開始(即未指定標簽/屬性時),只需進行一些小的更改,但查看類實作似乎我需要基本上復制并重新實作一半的 PermitScrubber 方法只是為了訪問該默認功能。Loofah::HTML5::Scrub 提供的默認值似乎不是任何現有 Loofah::Scrubber 類的一部分。
那么如何在不重新實作一半類的情況下對 Rails::Html::PermitScrubber 的默認操作進行細微更改呢?當然,這是一個非常常見的用例!
uj5u.com熱心網友回復:
我想你可以只繼承Rails::Html::PermitScrubber和覆寫keep_node?以獲得所需的行為(如果存在標簽,則不更改代碼路徑)。
原代碼keep_node?是
def keep_node?(node)
if @tags
allowed_node?(node)
else
Loofah::HTML5::Scrub.allowed_element?(node.name)
end
end
可能,這是您要更新的部分。
或者,如果子類不適合您的情況,您可以對現有類進行猴子修補。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/407154.html
標籤:
上一篇:如何在Ruby中將指標分配給變數
