2012-10-05 89 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\> 
相關問題