我有一個幫助程序方法,它在格式化後返回一個字符串,其中包括添加換行符。幫助程序方法返回的字符串中的換行符
我在視圖中調用這個幫助器方法,並試圖顯示這個格式化的字符串。
我使用「\ n」或「\ r \ n」來引入換行符,但在瀏覽器中顯示爲空白。
我有一個幫助程序方法,它在格式化後返回一個字符串,其中包括添加換行符。幫助程序方法返回的字符串中的換行符
我在視圖中調用這個幫助器方法,並試圖顯示這個格式化的字符串。
我使用「\ n」或「\ r \ n」來引入換行符,但在瀏覽器中顯示爲空白。
您應該使用<br>
或創建它像tag('br')
:
your_string = "test string" + tag('br')
your_string.html_safe #return your string
由於@Max正確地指出,從安全漏洞(XSS)方面,你可以在用戶提供的文本,你的字符串轉換爲使用h()
一個安全的字符串,並允許您安全地撥打完整字符串html_safe
。
如果您調用'html_safe',請確保您的字符串的其餘部分對於HTML輸出是安全的,否則您將遇到安全漏洞(XSS)。要麼它需要是一個你可以完全控制的字符串(比如明確使用''test string「'),或者你需要在字符串的用戶輸入部分調用轉義函數,然後調用組合字符串中的'html_safe'。 – Max
@max謝謝你指出這個! – dp7
很高興幫助!但'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
你可能想看看https://stackoverflow.com/a/17923431/7151673和https://stackoverflow.com/a/8405339/7151673。這些是對這些問題的具體答案,因爲我不是任何問題上接受答案的粉絲。 – Max