我将使用Redcarpet作为Markdown渲染器,并希望能够显示包含<和>的HTML或文本,而不对其进行解析。
问题在于渲染器在解析Markdown时输出了转义的HTML,因此我得到了以下结果:
因此,我无法区分人们发送到服务器的HTML和Redcarpet渲染器生成的HTML。如果我在这上面执行
有什么解决办法吗? 请注意,即使用户没有按照Markdown预期使用反引号`,也应该显示(但不解析)用户输入的HTML。
以下是相关代码片段:
以下是所需实现的效果:
用户输入
I *want* to write <code>
当服务器将此评论发送回来时,其源应为:
I <em>want</em> to write <code>
问题在于渲染器在解析Markdown时输出了转义的HTML,因此我得到了以下结果:
I <em>want</em> to write <code>
因此,我无法区分人们发送到服务器的HTML和Redcarpet渲染器生成的HTML。如果我在这上面执行
.html_safe
,我的Markdown将被解释,但用户输入的HTML也会被解释,这是不应该的。有什么解决办法吗? 请注意,即使用户没有按照Markdown预期使用反引号`,也应该显示(但不解析)用户输入的HTML。
以下是相关代码片段:
# this is our markdown helper used in our views
def markdown(text, options=nil)
options = [:no_intra_emphasis => true, ...]
renderer = MarkdownRenderer.new(:filter_html => false, ...)
markdown = Redcarpet::Markdown.new(renderer, *options)
markdown.render(text).html_safe
end