2011-11-29 21 views
0

我正在尋找將#前面的所有單詞(即#stackoverflow)轉換爲鏈接,點擊後鏈接到搜索頁面並將該單詞作爲查詢。Rails只能轉義內容的某些部分

最近我嘗試這樣做,有正確的HTML被退回,但由於內容自動逃脫它表現爲:

This is some content <a href="search?q=something">something</a> 

我的問題是:有沒有辦法只適用html_safe到的每一個部分內容除了這些鏈接?

+0

將在文字中加入什麼樣的東西?只是文本沒有任何標籤,而不是您想要添加的''? –

回答

1

如果你的標籤是簡單的字母數字串(即需要在HTML或URL編碼沒有),那麼你可以做這樣的事情:

s = ERB::Util.html_escape(text_to_be_linkified).gsub(/#(\w+)/, '<a href="search?q=\1">\1</a>').html_safe 

然後s.html_safe?將是真實<%= ... %>將結果傳遞通過原樣。如果你把它放在視圖幫助器中,那麼你不應該在html_escape上需要ERB::Util.前綴。如果您確實需要擔心URL或HTML編碼,那麼您可以適當修改gsub替換字符串。

例如:

> s = ERB::Util.html_escape('<pancakes & #things').gsub(/#(\w+)/, '<a href="search?q=\1">\1</a>').html_safe 
> puts s.html_safe? 
true 
> puts s 
&lt;pancakes &amp; <a href="search?q=things">things</a>