2012-10-05 58 views
4

我使用Redcarpet作为Markdown渲染器,我希望能够显示html或任何带有<的文本,并且>不需要解析它。使用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,我的降价将被解释,但用户输入的html也是如此,这不应该。

关于如何解决这个问题的任何想法? 请注意,即使用户没有按照预期的方式使用反引号,也可以显示(但不解析)用户输入的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 
+1

当用户提交它为什么不能解析的代码,并用降价围绕它来识别它的代码?或者让用户使用正确的降价。由于他们已经添加了星号,为什么他们不能添加反向代码? – Jon

+0

换取pandoc的redcarpet? https://github.com/alphabetum/pandoc-ruby – mb21

回答

1

如果我理解正确的话你只是想<code>为普通文字,而不是作为一个HTML元素。

对于您需要使用反斜线的<>

I *want* to write \<code\> 
相关问题