2016-12-04 52 views
0

我有一個幫助程序方法,它在格式化後返回一個字符串,其中包括添加換行符。幫助程序方法返回的字符串中的換行符

我在視圖中調用這個幫助器方法,並試圖顯示這個格式化的字符串。

我使用「\ n」或「\ r \ n」來引入換行符,但在瀏覽器中顯示爲空白。

+0

你可能想看看https://stackoverflow.com/a/17923431/7151673和https://stackoverflow.com/a/8405339/7151673。這些是對這些問題的具體答案,因爲我不是任何問題上接受答案的粉絲。 – Max

回答

1

您應該使用<br>或創建它像tag('br')

your_string = "test string" + tag('br') 
your_string.html_safe #return your string 

由於@Max正確地指出,從安全漏洞(XSS)方面,你可以在用戶提供的文本,你的字符串轉換爲使用h()一個安全的字符串,並允許您安全地撥打完整字符串html_safe

+2

如果您調用'html_safe',請確保您的字符串的其餘部分對於HTML輸出是安全的,否則您將遇到安全漏洞(XSS)。要麼它需要是一個你可以完全控制的字符串(比如明確使用''test string「'),或者你需要在字符串的用戶輸入部分調用轉義函數,然後調用組合字符串中的'html_safe'。 – Max

+0

@max謝謝你指出這個! – dp7

+0

很高興幫助!但'raw(some_string)'實際上與'some_string.html_safe'相同,如果您查看['raw']的源代碼(http://apidock.com/rails/ActionView/Helpers/OutputSafetyHelper /生的)。它不會轉義任何東西 - 它實際上關閉了Rails對該字符串的默認轉義。一種選擇是['safe_join'](http://apidock.com/rails/v4.2.7/ActionView/Helpers/OutputSafetyHelper/safe_join)。另見https://stackoverflow.com/questions/4251284/raw-vs-html-safe-vs-h-to-unescape-html。 – Max