Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未捕获的语法错误:意外标记<;在rails中链接到代码_Ruby On Rails - Fatal编程技术网

Ruby on rails 未捕获的语法错误:意外标记<;在rails中链接到代码

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用引号

我尝试使用ujs方法调用控制器中的自定义函数。我得到这个错误:


未捕获的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();
});