5

ユーザーがコンテンツを入力できるテキストエリア フィールドがあります。\nページにエントリを表示する場合、レールは改行ごとに戻りますが、ページの html では改行がまったくないように見えます。

私が収集したものから、これを回避する標準的な方法は、レンダリングを確実にするために.gsubコマンドを に置き換え\n、最後に<br />aを付けることです。.html_safe<br />

問題は、コンテンツを html_safe にしたくないということです。html は引き続き置換する必要がありますが、<br />タグは (エスケープされていない) コンテンツに挿入する必要があります。

提案をいただければ幸いです。

4

4 に答える 4

16

このsimple_format方法は、改行の書式設定に適しています。テキスト ブロックを<p>タグで囲み、改行文字を改行 ( ) に変換します<br>(改行が 2 つあると、次のテキストが 2 番目の段落に分割されます)。

ただし、他の html 文字はエスケープせず、許可するだけです。サニタイズsimple_formatとの組み合わせがうまくいくはずです。これを使用してみてください:

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

于 2010-11-23T07:54:38.783 に答える
6

テキスト領域に入力された HTML タグを表示したいが、改行を表示したい場合は、これを試してください:

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

「h」はすべての HTML 特殊文字を引用し、「simple_format」は改行を <br> に変換します。

于 2011-01-31T09:23:49.477 に答える
2

目的に応じて、 をそのまま格納し\n、コンテンツを画面に表示するときに を使用します(h @comment.content).gsub("\n", '<br>')。これは、最初にすべての HTML タグをエスケープし、次に を に置き換えます\n<br>

于 2010-11-23T07:39:55.103 に答える
0

&lt;pre&gt;これはすべて、タグを使用することで回避できます。これには、タブ移動も保持されるという利点があります。例えば

&lt;pre&gt;&lt;%= @article.body %&gt;&lt;/pre&gt;
于 2014-08-01T05:03:01.037 に答える