2010-05-27 70 views
2

我用我的RoR3應用Maruku。 但問題是,當我使用h(text)方法來逃避從我的數據庫中的文本之前,我使用Maruku它逃脫>>所以Maruku不會看到這是一個blockquote。鐵路3逃跑maruku

但我仍然想逃避文本的其餘部分,所以我的問題是我如何使這項工作?

我不想禁用逃跑,但我不希望它逃脫>

回答

0

下面的方法將html_encoded多串並替換已轉換爲HTML實體代碼回所有maruku塊引用元素>

對於此實現的目的,maruku blockquote行被定義爲以一個或多個以可選空白分隔的>序列開始的行。

def maruku_escape(text) 
    text.gsub(/^([\s]*\>)+/) {|match| match.gsub(/\>/, '>')} 
end 

以下測試字符串被用來

test_text = "<b>A bold tag</b> 
<span>Some text in a span</span> 

Some Markdown 
> Blockquote 1 
    > > nested blockquote 1 
    > > nested blockquote 2 
    >> nested blockquote 3 with no spaces 


Some plain text with an invalid blockquote > Some blockquote text 
<i>The end in italics<i>" 

並使用此如下maruku_text = maruku_escape(ERB::Util.html_escape(test_text))

給出以下結果

result = "&lt;b&gt;A bold tag&lt;/b&gt; 
&lt;span&gt;Some text in a span&lt;/span&gt; 

Some Markdown 
> Blockquote 1 
    > > nested blockquote 1 
    > > nested blockquote 2 
    >> nested blockquote 3 with no spaces 


Some plain text with an invalid blockquote &gt; Some blockquote text 
&lt;i&gt;The end in italics&lt;i&gt; 
" 
+0

有人比我更好的正則表達式可能能夠找出一個不會調用gsub兩次的正則表達式。 – 2010-06-06 12:40:16

+2

請注意,Rails 3會自動爲您調用html_escape。 – 2010-06-06 12:40:50

3

導軌3逸出的所有字符串by default。如果您想避免這種情況,您需要在模板中使用「some_string.html_safe」或使用<%= raw some_string%>將它們標記爲安全。

如果你設置了sanitize helper,讓你想通過HTML標籤,你可以做這樣的事情:

<%= sanitize(@maruku_content.to_html) %> 

消毒將擦洗你的內容,標出輸出作爲html_safe而留下所需的標籤完整。該選項在rails_xss插件文檔here中討論。他們使用的例子是紡織品。

+0

我不認爲sanitize會工作,雖然maruku是標記,但不是html。尤其是它使用>來表示塊引號 – 2010-06-08 21:48:38

+0

您是使用Maruku輸出HTML還是用於LaTex?如果它是用於HTML的,那麼上面的例子就是這樣做的,因爲它正在逃避Maruku的HTML輸出,而不是存儲的Markdown。 Markdown - > Maruku的內部表示 - > HTML - >清理 – Awgy 2010-06-09 00:44:05

+0

即使這樣做是相反的,sanitize也不會修改bare>。只有當它是像

  • 11. 打開文件路徑需要字符逃跑
  • 12. 尋找逃跑目標(追逐或追蹤尋路)
  • 13. 原料或逃跑包括在樹枝
  • 14. 在Bash擴展模式下逃跑@(..)
  • 15. Django/Textile/Pygments:「'>正在逃跑
  • 16. 的AsyncCallback在.NET網頁逃跑
  • 17. 蒙戈DB逃跑前斜線
  • 18. Haskell鐵路圖?
  • 19. 鐵路3條路線:加入RESTful方法
  • 20. 在Homestead跑迷路
  • 21. 如何使用maruku
  • 22. 鐵路葡萄路線
  • 23. 鐵路由器和路徑
  • 24. 使用鐵路API?
  • 25. 鐵路3路由:遇到麻煩了解有多個關聯的路由
  • 26. npm開始跑錯路徑
  • 27. 在軌道中使用Maruku的問題3
  • 28. 鐵路路由器的默認路由
  • 29. 鐵軌中的tinymce_hammer 3
  • 30. 的Rails 3:鐵軌新受迷惑的路線/控制器