2012-09-20 7 views
42

私は、Railsでjの機能について言及したブログに出会ったばかりです。彼らはそれを使ってajaxスタイルのページ更新を行っていました。Railsのj関数は何をしますか?

$('#cart').html("<%=j render @cart %>"); 

は、私は、彼らが部分的cartをレンダリングするパーシャルを使用している得るが、jのいただきました!ポイント?文字列をJavaScriptが受け入れるものに変換すると言う記事がいくつか見つかりましたが、それはどういう意味ですか?

答えて

51

escape_javascript(javascript)

エスケープキャリッジリターンとJavaScriptセグメントの単一および二重引用符。

エイリアスj()でも利用できます。

the rails docsより。

67

Peterが実際に正しい答えを投稿しました。しかし、私は精緻化しようとします:

あなたはajaxの基本的な概念に精通していると思いますか? あなたはajaxy形式でコメントを作成したいと考えています。これは(jqueryの/ JavaScriptで)クライアントからのAjaxリクエストがCommentsControllerに提出された場合、それは形式を認識することを意味し

def create 
    @comment = Comment.new(params[:comment]) 
    respond_to do |format| 
    render.js 
    end 
end 

:あなたは経由であなたのCommentsControllerPOSTリクエストに応答することができるレールで (.js)、_create.js.erb部分で応答します。 部分は、このような何かを使用して新しいコメントのレンダリングになります。今

$('.comments').append("<%=j render @comment %>"); 

Jまたはescape_javascript方法を取得するには: 一部ユーザーが(悪意のある)javascriptのだろうを含むコメントを提出することができますあなたがj方法を利用してない限り、自分のページ上で実行され

エスケープキャリッジリターンとJavaScriptのための単一引用符と二重引用符セグメント。

です。したがって、ブラウザでコードが実行されないようにします。

+0

レンダリングしているものがユーザー作成でない場合でも、JavaScriptが安全でない文字をエスケープしたい場合は、javascriptが壊れる可能性があるためです。 – DaveMongoose

関連する問題