Ruby on rails 基本RubyonRails AJAX错误

Ruby on rails 基本RubyonRails AJAX错误,ruby-on-rails,ajax,Ruby On Rails,Ajax,我正在使用Rails进行敏捷Web开发,第4版做了一些调整(主要是命名变体),我已经完成了迭代F2。在这个迭代中,使用:remote=>true修改index按钮,将format.js添加到控制器的respond_to部分,并生成一个js.rjs文件来执行AJAX渲染。或者至少这是我对它的解释。这些步骤的目标是在添加新行项目(在本例中为成员)时使用AJAX在侧栏中更新购物车(在本例中为团队) 在我的例子中,我尝试向团队中添加成员。下面是我添加的一些代码片段: index.html.erb: &l

我正在使用Rails进行敏捷Web开发,第4版做了一些调整(主要是命名变体),我已经完成了迭代F2。在这个迭代中,使用:remote=>true修改index按钮,将format.js添加到控制器的respond_to部分,并生成一个js.rjs文件来执行AJAX渲染。或者至少这是我对它的解释。这些步骤的目标是在添加新行项目(在本例中为成员)时使用AJAX在侧栏中更新购物车(在本例中为团队)

在我的例子中,我尝试向团队中添加成员。下面是我添加的一些代码片段:

index.html.erb:

<%= button_to 'Add to Team', members_path(:player_id => player), 
    :remote => true %>
create.js.rjs:

page.replace_html('team', render(@team))
页面可以呈现,我仍然可以单击按钮向团队添加成员。但是,AJAX不起作用。当我重新加载时,我仍然可以看到成员已添加到侧栏中。所有其他团队功能都保留了,因为我可以清空团队并添加我想要的任何成员。检查服务器日志时,我发现以下错误:

错误:

ActionView::Template::Error (undefined local variable or method `page' for #<
#<Class:0x413e1b8>:0x413cb20>):
    1: page.replace_html('team', render(@team))
  app/views/members/create.js.rjs:1:in `block in _app_views_members_create_js_rj
s___908569197_34199712_807066544'
  app/views/members/create.js.rjs:1:in `_app_views_members_create_js_rjs___90856
9197_34199712_807066544'
  app/controllers/members_controller.rb:47:in `create'
ActionView::Template::Error(未定义的局部变量或方法)`∩╗┐第页#<
#:0x413cb20>):
1: page.replace_html('team',render(@team))
app/views/members/create.js.rjs:1:in`block in\u app\u views\u members\u create\u js\u rj
s___908569197_34199712_807066544'
app/views/members/create.js.rjs:1:in`\u app\u views\u members\u create\u js\u rjs\u 90856
9197_34199712_807066544'
app/controllers/members\u controller.rb:47:in'create'
基于此,它似乎找到了create.js.rjs,但在解释它时遇到了困难。我不确定页面前面有什么奇怪的符号

编辑:我还发现,如果我在单击按钮之前和之后查看源代码,那么按钮确实在刷新代码并添加所需的项目。问题似乎完全在于试图刷新部分内容


感谢您的帮助。谢谢

您的rjs文件似乎在开始时有一些无效位。可能尝试重新创建该文件?

您希望如何处理render(@team)

我已经查看了,但没有发现您期望它如何工作。也许还有另一个你知道而我不知道的功能


您也可以使用erb而不是rjs,就像一个视图一样使用它。按照Bert Goethal的回答,编辑器是否将文本文件保存为带有BOM的UTF-8


BOM将在文件开头添加两个unicode编码的字符,这可能就是这些字符的来源…

基本上,该命令的目标是将页面上的元素替换为id“team”,并将其替换为呈现的部分“team”。我已经看到了一些使用js.erb的变通方法,但是这是一个不同的实现,我想弄清楚这里的问题是什么。这个问题似乎通过魔法自行解决了。我查看了实用程序员论坛,寻找解决方案,一些人建议他们需要重新启动服务器。不管出于什么原因,这都起到了作用,AJAX脚本现在正在按预期运行。重新创建文件并重新启动rails服务器解决了这个问题。谢谢
ActionView::Template::Error (undefined local variable or method `page' for #<
#<Class:0x413e1b8>:0x413cb20>):
    1: page.replace_html('team', render(@team))
  app/views/members/create.js.rjs:1:in `block in _app_views_members_create_js_rj
s___908569197_34199712_807066544'
  app/views/members/create.js.rjs:1:in `_app_views_members_create_js_rjs___90856
9197_34199712_807066544'
  app/controllers/members_controller.rb:47:in `create'