Railsのj
関数について言及しているブログを見つけました。彼らはajaxスタイルのページ更新を行うためにそれを使用していました。
$('#cart').html("<%=j render @cart %>");
パーシャルを使用してcart
パーシャルをレンダリングしていますが、j
の意味は何ですか?文字列をJavaScriptが受け入れるものに変換するという記事をいくつか見つけましたが、それはどういう意味ですか?
escape_javascript(javascript)
JavaScriptセグメントのキャリッジリターンと一重引用符および二重引用符をエスケープします。
エイリアスj()からも利用できます。
the Rails docs から。
ピーターは実際に正しい答えを投稿しました。ただし、詳しく説明します。
Ajaxの基本的な概念に精通していると思いますか?コメントを無作法に作成したいとします。 Railsでは、次のようにCommentsController
の[〜#〜] post [〜#〜]リクエストに応答できます:
def create
@comment = Comment.new(params[:comment])
respond_to do |format|
render.js
end
end
つまり、クライアントからのajaxリクエスト(jquery/javascript経由)がCommentsController
に送信された場合、フォーマット(.js
)そして_ create.js.erbパーシャルで応答します。次に、パーシャルは次のようなもので新しいコメントをレンダリングします。
$('.comments').append("<%=j render @comment %>");
jまたはescape_javascriptメソッドにアクセスするには:一部のevilユーザーは、ページで実行される(悪意のある)JavaScriptを含むコメントを送信する可能性があります- nlessj
メソッドを使用する
JavaScriptセグメントのキャリッジリターンと一重引用符および二重引用符をエスケープします。
そのため、ブラウザでのコードの実行が妨げられます。