jQueryとRails 3.1間のAJAXリクエスト(現時点では、ローカルホストでの作業、ChromeとFirefoxでのテスト、これが役立つ場合)に取り組んでいます。ユーザーがリンクをクリックすると、2つのテキストフィールドの値をサーバーに渡します。具体的には、これらの2つの値を「回答」データベーステーブルに格納するAnswersControllerというコントローラがあります。jQueryからのAJAXリクエストにRails処理のパラメータがありません
以下は、リクエストを行うための私のフロントエンドコードです。この要求の応答関数が発生し、 "last_chance"と呼ばれる私の段落がサーバが応答するものによって満たされるので、要求はRailsによって正常に受信されます。
$('.other_question a').click(function(e) {
var this_profile_id = window.location.pathname.substring(1).split('/')[1];
var this_question_id = window.location.pathname.substring(1).split('/')[3]; // there is a hidden space when splitting
var ajax_data = {
type : "PUT", /* should this be POST for older browsers? */
url : '/profiles/' + this_profile_id + '/answers/' + this_question_id + '.json',
contentType : 'json',
dataType : 'json',
success : function(msg) {
alert("Data Saved: " + msg);
$('#last_chance').text(msg['saved']);
},
data : {
_method : 'PUT',
page : {
authenticity_token : $('input[name=authenticity_token]').attr('value'),
answer : {
response : 'hi there',
comments : 'word'
},
action : 'update',
controller : 'answers',
profile_id : this_profile_id,
id : this_question_id
}
}
};
$.ajax(ajax_data);
return false;
});
ここでは、これを処理するために私のバックエンドのコードです:方法はAnswersControllerでの更新です。今
def update
respond_to do |format|
format.html { redirect_to 'http://google.com'}
format.json { render :json => {:saved => 'ok: ' + params.to_s }.to_json }
end
return
end
、私はRailsが受け取ったのparamsと「last_chance」段落要素を満たしたときに、それは次のことを示しています
ok: {"action"=>"update", "controller"=>"answers", "profile_id"=>"11", "id"=>"42", "format"=>"json"}
何かがRailsが、私はAJAX呼び出しに含まれ、これらの他のパラメータを受け入れるか、受信していないことを、私は認識していないんだということが起こっていない限り、それは、そうです。誰かがなぜこれが私に説明できますか?そして、私はどのようにそれが含まれているすべてのパラメータを受け取ることを確認するのですか?
ご協力いただきありがとうございます。
ああ、私もすべてのデータパラメータを削除しました。同じ結果が返されました(つまり、Railsが返されたパラメータを処理することを意味します)。しかし、どうすればデータを渡すことができますか?これらのカスタムパラメータはどこに行きましたか?
EDIT:応答の提案から、私はこれにそれを変更:
params[:saved] = 'OK'
respond_to do |format|
format.html { redirect_to 'http://google.com'}
format.json { render :json => params.to_json }
end
をこのことから、私は「last_chance」の部分に入った唯一の出力が「OK」でした。どこから行くことができますか?
こんにちはVik、ご回答いただきありがとうございます。私はこれを試して、私の最初の投稿の編集部分に結果を入れました。 paramsハッシュが空であるようです。どこから行くことができますか? – spanport
paramsハッシュが応答を得る方法よりも空の場合:ok:{"action" => "update"、 "controller" => "answers"、 "profile_id" => "11"、 "id" => "42 "、" format "=>" json "}。 paramsをデバッグし、新しい値を追加する前後にその値を表示するだけです。params [:saved] = 'OK' 。あなたのログをチェックしてください。 – Vik
こんにちはVik - 私はおそらく、この部分のあなたの提案に誤っていくつかの変更を加えたと思います。しかし、私はすべてのデータが "ページ"から "データ"自体に移動するように変更しました。ご協力ありがとうございます。 – spanport