0

Rails3.0アプリケーションをPrototypeとRJSで実行しています。jQueryだけを使用するように変換したいと思います。

私の質問は

1. jQueryを使用するときにRJSを完全に取り除くことは可能ですか?

2.そうでない場合、以下を変換するにはどうすればよいですか。

index.html.erbに次のDIV要素があります。

<div id="students"></div>

私は以下を含むajaxCalls.js.erbを持っています:

$.ajax({
    url: '<%=populate_students_path()%>',
    type: 'POST',
    data: 'authenticity_token=' + AUTH_TOKEN,
    dataType: 'html', // Consider changing to HTML if this doesnt work
    beforeSend: function (xhr) {
      xhr.setRequestHeader("Accept", "text/javascript");
    }
  }).done(function (data) {

    // TODO Populate table with populate function
    var users_table = $('#students').dataTable({
      'aData': data
    });
  });

その中で私は次の応答を受け取ります:

try {
populate("{\"54\":{\"section\":\"-\",\"filter_table_row_contents\":\"<td>\\n  c5leharf\\n</td>\\n<td>\\n  Lehar\\n</td>\\n<td>\\n  Franz}")
}

私は以下を含むpopulate.rjsを持っています:

page.call "populate", @students.to_json

これは次のように呼ばれるかもしれませんが、私にはわかりません:

function populate(json_data) {
  users_table.populate(json_data);
  users_table.render();
}

だから、ここでの質問は**

応答を正しくレンダリングするにはどうすればよいですか?AJAX呼び出しから取得したデータからpopulate関数を削除するにはどうすればよいですか?プレーンJSONを取得するにはどうすればよいですか?

編集:Kaerosの答えは機能し、私のコントローラーは次のようになりました。

respond_to do |format|
  format.json { render :json => @students_data } 
end
4

1 に答える 1

1

使用しているものと同様のajaxメソッドを使用できます(サーバーからjsonを期待します)。

$.ajax({
    url: '<%=populate_students_path()%>',
    type: 'POST',
    data: 'authenticity_token=' + AUTH_TOKEN,
    dataType: 'json',
    beforeSend: function (xhr) {
      xhr.setRequestHeader("Accept", "text/javascript");
    }
  }).done(function (data) {
    //Do something with the data received as json
  });

そして、コントローラーメソッドでは、jsonを返す必要があります。

respond_to do |format|
  format.json { render json: @some_instance_variable }
end
于 2013-02-27T02:24:50.020 に答える