2016-12-04 7 views
0

書式設定後に文字列を返すヘルパーメソッドがあります。これには改行が含まれます。ヘルパーメソッドによって返された文字列の改行

ビューでこのヘルパーメソッドを呼び出していて、このフォーマットされた文字列を表示しようとしています。

私は改行を導入するために "\ n"または "\ r \ n"を使用していますが、これはブラウザに単なるスペースとして表示されます。

+0

https://stackoverflow.com/a/17923431/7151673およびhttps://stackoverflow.com/a/8405339/7151673をご覧ください。これらの質問に対する具体的な回答は、どちらの質問についても受け入れられた回答のファンではないためです。 – Max

答えて

1

あなたはtag('br')ようにそれを<br>を使用するか、または作成する必要があります。

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

@maxが正しく指摘したように、セキュリティ上の脆弱性(XSS)側面からあなたがあなたの文字列を変換し、ユーザ提供テキスト、上h()を使用することができます安全な文字列を使用して、完全な文字列にhtml_safeを安全に呼び出すことができます。

+2

'html_safe'を呼び出す場合は、残りの文字列がHTML出力に安全であるか、セキュリティ上の脆弱性(XSS)があることを確認してください。 ''テスト文字列 ''を明示的に使用するなど、完全に制御できる文字列である必要があるか、結合された文字列で 'html_safe'を呼び出す前に文字列のユーザ入力部分でエスケープ関数を呼び出す必要があります。 – Max

+0

@maxこれを指摘してくれてありがとう! – dp7

+0

喜んで助けてください!しかし 'raw(some_string)'は実際に 'some_string.html_safe'と同じです。あなたが[' raw']のソースを見ると分かるように(http://apidock.com/rails/ActionView/Helpers/OutputSafetyHelper /生)。これは何もエスケープしません。実際には、Railsのデフォルトの文字列をエスケープします。 1つのオプションは['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

関連する問題