我正在使用 Redcarpet作为 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 也会被解释,这是不应该的。
知道如何解决这个问题吗? 请注意,这个想法是显示(但不解析)用户输入的 html,即使用户没有像 markdown 预期的那样使用反引号。
这是相关的代码:
# 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
最佳答案
如果我理解正确的话,你只需要 <code>
作为普通文本而不是 HTML 元素。
为此你需要转义 <
和 >
带反斜杠:
I *want* to write \<code\>
关于html - 使用 Redcarpet 和 Markdown 呈现原始 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12747142/