2011-01-04 9 views
5

私はこのRailscast、特にこれらのコード行を見てきました。jQueryを使ったRuby on Rails escape_javascriptの使用

// views/reviews/create.js.erb 
$("#new_review").before('<div id="flash_notice"><%= escape_javascript(flash.delete(:notice)) %></div>'); 
$("#reviews_count").html("<%= pluralize(@review.product.reviews.count, 'Review') %>"); 
$("#reviews").append("<%= escape_javascript(render(:partial => @review)) %>"); 
$("#new_review")[0].reset(); 

escape_javascriptが部分的にレンダリングし、フラッシュ通知を表示するためではなく、複数形の機能のために使用されてきた理由を誰かが説明してもらえますか?

おかげ

答えて

4

複数形から可能な出力のカップル(@ review.product.reviews.count、「レビュー」)

0 Reviews 
1 Review 
n Reviews 

はその何も出力がこれまでにエスケープする必要はないだろう、そう作家が選んだだけありますそうしないでください。

JavaScriptをエスケープすると、<div id="yo">You're Awesome</div>が、JavaScriptのインタプリタによって引用符があなたの文字列変数の終わりとみなされることのないテキストに変更されます。

あなたは

var awesome = "<div id="yo">You're Awesome</div>"; 

を入力した場合には爆破でしょう。引用符を「エスケープ」する必要があります

&lt;div id=\&quot;yo\&quot;&gt;You\'re Awesome&lt;\/div&gt; 
1

あなたは何jQuery.ajax({タイプ: "スクリプト"})でブラウザに生のjavascriptの応答、送信されているコマンドを期待します。

ページ内のHTMLをAJAX応答のHTMLに置き換えるには、javascriptとして送信できるようにエスケープする必要があります。したがって、escape_javascriptの使用。

+0

ありがとうTeddy、ありがとうございます。私の質問には本当に答えません。 – pingu

関連する問題