2

テキストエリアから取得した複数行の文字列をRJS経由で挿入したいと思います。行うこと:

$('#description').text('<%= simple_format description %>');

次のようなものが生成されるため、機能しません。

$('#description').text('<p>first line
<br />second line</p>

<p>fourth line</p>');

文字列が1行にないため、JS呼び出しは失敗します。simple_formatが文字列を正しくフォーマットしたので、RJSファイルの1行にすべてを印刷するにはどうすればよいですか?

4

2 に答える 2

2

これを試して:

$('#description').text('<%= simple_format(description).gsub("\n", "\\n").gsub("\r", "\\r").gsub("\t", "\\t").gsub("'","\\'")  %>');

これにより、改行文字がJavascriptが理解できるエスケープシーケンスに置き換えられます。同様に、キャリッジリターンやタブなどの他の文字についても同様です。さらに、文字列区切り文字である'文字をエスケープシーケンスに置き換えて、「It'smine」などの文字列が予期しない動作を起こさないようにします。

于 2012-11-29T17:18:06.903 に答える
0

(できれば)組み込みのメソッドescape_javascript()またはj()メソッドを使用できます。

$('#description').text('<%= j(simple_format(description)) %>');

http://api.rubyonrails.org/classes/ActionView/Helpers/JavaScriptHelper.html#method-i-escape_javascript

于 2015-02-07T05:04:33.610 に答える