我想将一些HTML标记列入白名单,例如<kbd></kbd>
,以便我可以为所有键盘快捷键显示漂亮的键盘图标。我怎样才能做到这一点?
下面的代码片段是我目前用于将Markdown字符串转换为HTML的函数。
def markdown_to_html(markdown_str)
options = {
filter_html: true,
link_attributes: { rel: 'nofollow', target: '_blank' },
no_styles: true
}
extensions = {
autolink: true,
fenced_code_blocks: true,
footnotes: true,
highlight: true,
no_intra_emphasis: true,
quote: true,
space_after_headers: true,
strikethrough: true,
superscript: true,
tables: true
}
renderer = Redcarpet::Render::HTML.new(options)
markdown = Redcarpet::Markdown.new(renderer, extensions)
markdown.render(markdown_str).html_safe
end
答案 0 :(得分:0)
使用sanitize
和您自己的自定义清理程序类。
此类可以与控制器类位于同一文件中。
class MarkdownScrubber < Rails::Html::PermitScrubber
def initialize
super
self.tags = %w( kbd )
self.attributes = []
end
def skip_node?(node)
node.text?
end
end
然后在致电render
时使用它:
renderer = Redcarpet::Render::HTML.new(options)
markdown = Redcarpet::Markdown.new(renderer, extensions)
sanitize(markdown.render(markdown_str), scrubber: MarkdownScrubber.new)