Ruby on rails 未捕获的语法错误:意外标记<;在rails中链接到代码
我尝试使用ujs方法调用控制器中的自定义函数。我得到这个错误:Ruby on rails 未捕获的语法错误:意外标记<;在rails中链接到代码,ruby-on-rails,Ruby On Rails,我尝试使用ujs方法调用控制器中的自定义函数。我得到这个错误: 未捕获的SyntaxError:意外的标记您使用由生成的标记填充JS函数 <%= link_to @room.name, room_connected_path(@room), :remote => true, :method => "put" %> true,:method=>“put”%> 因此,它应该返回有效的JS,而不仅仅是HTML 我不确定您想在这里实现什么,但我首先要将生成的HTML用引号
未捕获的SyntaxError:意外的标记您使用由生成的标记填充JS函数
<%= link_to @room.name, room_connected_path(@room), :remote => true, :method => "put" %>
true,:method=>“put”%>
因此,它应该返回有效的JS,而不仅仅是HTML
我不确定您想在这里实现什么,但我首先要将生成的HTML用引号括起来,使其成为正确的JS字符串:
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();
});
session.on(“connectionCreated”,函数(事件){
connectionCount++;
//jqueryFunction(“从js调用jquery”);
'true,:method=>“put”%>'
displayConnectionCount();
});
您使用由生成的标记填充JS函数
<%= link_to @room.name, room_connected_path(@room), :remote => true, :method => "put" %>
true,:method=>“put”%>
因此,它应该返回有效的JS,而不仅仅是HTML
我不确定您想在这里实现什么,但我首先要将生成的HTML用引号括起来,使其成为正确的JS字符串:
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();
});
session.on(“connectionCreated”,函数(事件){
connectionCount++;
//jqueryFunction(“从js调用jquery”);
'true,:method=>“put”%>'
displayConnectionCount();
});
问题是您的ruby位于javascript块中,因此它认为它是javascript。退出javascript,如:
true,:method=>“put”%>
或
true,:method=>“put”%>
以及-将链接附加到DOM中,如:
$('#link').append()
在js之外:问题是您的ruby位于javascript块中,因此它认为它是javascript。退出javascript,如:
true,:method=>“put”%>
或
true,:method=>“put”%>
以及-将链接附加到DOM中,如:
$('#link').append()
在js之外:非常感谢您的有益评论。我按照您的建议将链接用单引号括起来,并获得了这行的语法:```我正在尝试在建立连接后更改房间的名称。“session.on”(“connectionCreated”)是一个回调函数,在会话建立连接后调用该函数。在这个回调函数中,我试图调用控制器“connected”中的一个函数,并用一个新名称更新表“Room”。我删除了它,没有更多的错误。非常感谢!但是它仍然没有调用控制器中定义的函数“connected”。我怀疑添加单引号后是否会执行行link_to
。非常感谢您的有用评论。我按照您的建议将链接用单引号括起来,并获得了这行的语法:```我正在尝试在建立连接后更改房间的名称。“session.on”(“connectionCreated”)是一个回调函数,在会话建立连接后调用该函数。在这个回调函数中,我试图调用控制器“connected”中的一个函数,并用一个新名称更新表“Room”。我删除了它,没有更多的错误。非常感谢!但是它仍然没有调用控制器中定义的函数“connected”。我怀疑在添加单引号后是否执行了行link_to
。你是对的。我认为问题在于javascript块中的ruby代码。我尝试添加j
,但得到了相同的语法错误。我已经附上了这个问题的截图。嗯。。。您是否也尝试了escape\u javascript
?还有-您到底想在这里做什么?您可能希望尝试将链接附加到DOM元素。因为到目前为止,它说的是“做这个javascript,这里有一个链接”。但不确定你想用这个链接做什么。我调整了答案以反映这一点。一旦建立了连接,我想更改房间
表中的值。Javascript函数session.on(“connectionCreated”,…)
,我想从这里更新文件室表记录中的一列的值。我还尝试使用ajax。但是我也有这个问题。因此,链接到
的只是为用户提供一个可点击的按钮。您需要坚持使用AJAX,并将POST/PUT发送到控制器以更新数据库中的值。您是对的。我认为问题在于javascript块中的ruby代码。我尝试添加j
,但得到了相同的语法错误。我已经附上了这个问题的截图。嗯。。。您是否也尝试了escape\u javascript
?还有-您到底想在这里做什么?您可能希望尝试将链接附加到DOM元素。因为到目前为止,它说的是“做这个javascript,这里有一个链接”。但不确定你想用这个链接做什么。我调整了答案以反映这一点。一旦建立了连接,我想更改房间
表中的值。Javascript函数session.on(“connectionCreated”,…)
,我想从这里更新文件室表记录中的一列的值。我还尝试使用ajax。但是我也有这个问题。因此,链接到
的只是为用户提供一个可点击的按钮。您需要坚持使用AJAX,并向控制器发布/放置以更新数据库中的值。当您尝试AJAX版本时,服务器日志中有什么内容?我遇到的问题是,Room
对象是rails视图对象,在js范围内不可见。如何将Room
view对象传递给javascript?当前控制器中的@room
值为零。我已对问题进行了编辑,以包括这一问题的细节。谢谢你把它弄明白了var room_id=`是将对象从rails视图传递到js的方法,当您尝试AJAX版本时,服务器日志中有什么内容?我遇到的问题是,room
对象是rails视图对象,在js范围内不可见。我怎么通过
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 );
});
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
<%= link_to @room.name, room_connected_path(@room), :remote => true, :method => "put" %>
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();
});