Один и тот же Ajax-код выполняется из двух разных функций JavaScript. В обеих функциях ajax вызывает функцию connected
в контроллере для обновления значения в таблице Room
. Но когда ajax вызывается из функции javascript connected
, вся функция выполняется, но не тогда, когда она вызывается из disconnected
.
Функции JavaScript в show.html.erb
var room_id = <%= @room.id %>
console.log("room id: ", room_id)
session.on("connectionCreated", function(event) {
console.log("connectionCreated");
$.ajax({
type: "PUT",
data: JSON.stringify({ room: {connected: true}, _method:'put' }),
url: "/rooms/" + room_id + "/connected",
contentType: 'application/json'
}).done(function( msg ){
alert( "Data Saved: " + msg );
});
});
// Disconnect
session.on('sessionDisconnected', function(event) {
console.log("session Disconnected")
$.ajax({
type: "PUT",
data: JSON.stringify({ room: {connected: false}, _method:'put' }),
url: "/rooms/" + room_id + "/connected",
contentType: 'application/json'
}).done(function( msg ){
alert( "Data Saved: " + msg );
});
window.location.replace('<%= rooms_path %>');
});
}
Server.logs:
From:
/ Users / us186007 / Рабочий стол / WebApps / goldenyears / app / controllers / rooms_controller.rb @ line 38 RoomsController # подключено:
36: def connected
37: binding.pry
=> 38: @room = Room.find params[:room_id]
39: binding.pry
40: @room.update_attributes(:connected => params[:room][:connected])
41: end
[1] pry(#<RoomsController>)> continue
Room Load (0.4ms) SELECT "rooms".* FROM "rooms" WHERE "rooms"."id" = $1
LIMIT $2 [["id", 6], ["LIMIT", 1]]
From: /Users/us186007/Desktop/WebApps/goldenyears/app/controllers/rooms_controller.rb @ line 40 RoomsController#connected:
36: def connected
37: binding.pry
38: @room = Room.find params[:room_id]
39: binding.pry
=> 40: @room.update_attributes(:connected => params[:room][:connected])
41: end
[1] pry (#)> продолжить
(0,2 мс) НАЧАТЬ
(0,2 мс) COMMIT
Не найден шаблон для RoomsController # подключен, рендеринг head: no_content
Завершено 204 Нет содержимого в 20108ms (ActiveRecord: 0,8ms)
Started PUT "/rooms/6/connected" for 127.0.0.1 at 2019-01-06 13:33:31 -0800
Processing by RoomsController#connected as */*
Parameters: {"room"=>{"connected"=>false}, "room_id"=>"6"}
Started GET "/rooms" for 127.0.0.1 at 2019-01-06 13:33:31 -0800
From: /Users/us186007/Desktop/WebApps/goldenyears/app/controllers/rooms_controller.rb @ line 38 RoomsController#connected:
36: def connected
37: binding.pry
=> 38: @room = Room.find params[:room_id]
39: binding.pry
40: @room.update_attributes(:connected => params[:room][:connected])
41: end
Несмотря на то, что в журналах сервера показано, что он вызывает connectedCreated
при вызове из функции sessoinDisconected
.
Как понять, что происходит? В журналах сервера нет сообщений об ошибках.