html - 使用 Redcarpet 和 Markdown 呈现原始 html

标签 html ruby-on-rails escaping markdown redcarpet

我正在使用 Redcarpet作为 Markdown 渲染器,我希望能够显示 html 或任何带有 < 和 > 的文本,而不需要对其进行解析。

下面是应该发生的情况的说明:

用户类型

I *want* to write <code>

服务器发回的这条评论的出处应该是

I <em>want</em> to write &lt;code&gt;

问题是因为渲染器在解析 Markdown 时输出转义的 html,我得到:

I &lt;em&gt;want&lt;/em&gt; to write &lt;code&gt;

因此我无法区分人们发送到服务器的 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/

相关文章:

c# - 带有 dontEscape 的 Uri 构造函数已过时,替代方案是什么?

html - 当父元素高度设置为 vh 时,内部内容和滚动条被兄弟元素的高度截断

ruby-on-rails - 如何记录 Heroku 上的所有 Rails 生产控制台访问?

ruby-on-rails - Ruby on Rails 教程 - 5.26 - Sublime Text "Unable to Save"新文件 "spec/support/utilities.rb"

java - Selenium 中的转义撇号

php - jQuery 转义空格

PHP自动生成新页面

javascript - 将固定的 PX 侧边栏与基于百分比的内容混合

javascript - JQuery 函数 fn() 未定义

ruby-on-rails - rails 4 : fields_for in fields_for