Я пытаюсь использовать подход ujs для вызова пользовательской функции в контроллере. Я получаю эту ошибку:
Uncaught SyntaxError: Неожиданный токен <</p>
Я пытался напрямую использовать пользовательский URL. Это тоже не работает.
рейковые маршруты
room_connected PUT /rooms/:room_id/connected(.:format) rooms#connected
rooms GET /rooms(.:format) rooms#index
POST /rooms(.:format) rooms#create
routes.rb
resources :rooms do
put "connected", :to => "rooms#connected", as: :connected
end
Функция Js в show.html.erb
session.on("connectionCreated", function(event) {
connectionCount++;
// jqueryFunction("Call from js to jquery");
<%= link_to @room.name, room_connected_path(@room), :remote => true, :method => "put" %>
displayConnectionCount();
});
Функция определена в room_controller.rb
def connected
binding.pry
@room = Room.find params[:id]
# @room.update_attributes(params[:name])
end
Error 1:
6: 158 Uncaught SyntaxError: неожиданный токен <для строки <code><%= link_to @room.name, room_connected_path(@room), :remote => true, :method => "put" %>` which gets translated as below:
`<a data-remote="true" rel="nofollow" data-method="put" href="/rooms/6/connected">uma7</a>
Error 2:
«Подключенная» функция, определенная в контроллере, не вызывается.
Пожалуйста, порекомендуйте. Спасибо
Пробовал Аякс:
session.on("connectionCreated", function(event) {
console.log("connectionCreated");
console.log(room.id);
connectionCount++;
// jqueryFunction("Call from js to jquery");
$.ajax({
type: "PUT",
data: JSON.stringify({ room: {name: 'New_room'}, _method:'put' }),
url: "/rooms/" + room.id + "/connected",
contentType: 'application/json'
}).done(function( msg )
{
alert( "Data Saved: " + msg );
});
* +1036 *});
Это бросает:
jquery.self-ee.js?body=1:10255 PUT http://localhost:3000/rooms/6/connected 500 (Internal Server Error)
Журналы сервера:
Started PUT "/rooms/undefined/connected" for 127.0.0.1 at 2019-01-06 09:29:13 -0800
Processing by RoomsController#connected as */*
Parameters: {"room"=>{"name"=>"New_room"}, "room_id"=>"undefined"}
From: /Users/us186007/Desktop/WebApps/goldenyears/app/controllers/rooms_controller.rb @ line 39 RoomsController#connected:
36: def connected
37: binding.pry
38: # @room = Room.find params[:id]
=> 39: @room.update_attributes(params[:name])
40: end
[1] pry(#<RoomsController>)> @room
=> nil