2010-11-23 53 views
5

我有一個textarea字段,用戶可以輸入內容。當在一個頁面上顯示它們的條目時,rails會爲每個換行符返回\n,這對頁面上的html沒有任何中斷。解析textareas中的換行符而不允許所有的html標籤

從我所收集,解決這個得到的標準方式是.gsub命令,用<br />更換\n,然後在年底.html_safe,確保<br />呈現。

問題是,我不想html_safe的內容 - html應該仍然被替換,但<br />標籤應該被注入(非轉義)的內容。

建議感激。

回答

16

simple_format方法適用於格式化換行符。它在<p>標籤中包裝文本塊,並將換行符轉換爲換行符(<br>)(雙換行符將以下文本分成第二段)。

但它不會轉義其他html字符,而是允許它們。對於simple_format以及sanitize組合後應該做的很好。嘗試使用這樣的:

<%=raw sanitize(simple_format(@article.body), :tags => %w(br p)) %>

+0

完美 - 非常感謝。 ;-) – PlankTon 2010-11-23 08:00:00

2

取決於你想做什麼,你可以存儲\n,因爲它是什麼,然後,在屏幕上顯示的內容時,用(h @comment.content).gsub("\n", '<br>'),這是第一次逃避所有的HTML標籤,然後更換\n<br>

6

如果你想在文本區域中可見,進入HTML標籤,但還是想換行顯示,試試這個:

<%= simple_format(h @article.body) %> 

的「H」引述所有HTML特殊字符和「simple_format」然後將換行符轉換爲<br>。

-1

所有這一切都可以通過使用&lt;pre&gt;標籤來避免。這也具有保留標籤的優點。例如

&lt;pre&gt;&lt;%= @article.body %&gt;&lt;/pre&gt; 
相關問題