jquery - "Ajax is not found"异常 - Rails 是否错误地默认为 Prototype?

标签 jquery ruby-on-rails ruby-on-rails-3

我正在尝试创建一个显示任务列表的页面,并允许用户通过选中复选框来更新任务状态。

当我在浏览器上运行页面并单击复选框时,出现 Javascript 异常“

Uncaught ReferenceError: Ajax is not defined (anonymous function)2:96 onclick

这是我的 _task.html.erb 文件中的代码:

<%= check_box_tag "id", "id", task.done, 
    :onclick => remote_function(
      :update => "task", 
      :url => { :action => :update }, 
      :with => "'done=true'", 
      :complete => "alert('hi')"  ) %>

为什么我会收到此Ajax未定义异常?

我重新安装了rails jquery,确保javascripts文件夹中有rails.js和jquery.js,并确认它们正在加载到HTML上,如下所示:

<script src="/javascripts/jquery.js?1303396383" type="text/javascript"></script> 
<script src="/javascripts/rails.js?1303562965" type="text/javascript"></script> 
<script src="/javascripts/application.js?1301606933" type="text/javascript"></script> 
<script src="/javascripts/jquery.purr.js?1302145859" type="text/javascript"></script> 
<script src="/javascripts/best_in_place.js?1302150372" type="text/javascript"></script> 

有人发表评论说,大写A的“Ajax”是原型(prototype)函数而不是rails函数。我的应用程序是否以某种方式配置为尝试使用 Prototype 而不是 Rails?我需要更改文件来解决此问题吗?

我刚刚尝试更改 config/application.rb 并取消注释此行:

config.action_view.javascript_expansions[:defaults] = %w(jquery rails)

似乎也不起作用。有什么想法吗?

非常感谢您的帮助。

最佳答案

remote_function,像大多数 RJS 一样,uses Prototype directly并且不属于 UJS 概念的一部分。 Prototype 帮助程序始终在 Rails 应用程序中可用(直到 Rails 3.1),但它们生成的 JavaScript 仅限于 Prototype,除非您还使用 Prototype JavaScript 库,否则它们将无法工作。

在您的示例中,您使用的是 jQuery 而不是 Prototype。如果您想使用 jQuery,您应该写出预期的 JavaScript 或编写您自己的 remote_function 帮助程序。

关于jquery - "Ajax is not found"异常 - Rails 是否错误地默认为 Prototype?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5739431/

相关文章:

c# - 用 div 值填充 @Html.Hidden

ruby-on-rails - 在 Ubuntu 上安装 RVM

ruby-on-rails - 无法安装 RVM。/usr/local/rvm 中的权限被拒绝

ruby-on-rails - 在液滴中访问 rails image_tag 助手

ruby-on-rails - 从 View 调用 link_to 中的 Controller 方法

ruby-on-rails - 如何将大于 5GB 的文件上传到 Amazon S3?

javascript - 使用 jQuery 即时排序和显示 Ajax 数据

javascript - 使用 jquery 获取以前的 div 数据?

javascript - 在 IE 中等待服务器端代码时加载动画

ruby-on-rails - 在 postgres 中存储和检索任意深度嵌套结构的有效方法是什么?