jquery - Ember.js 对 JQuery 的依赖无法通过 Rails 得到满足

标签 jquery ruby-on-rails rubygems ember.js

我正在尝试在我的 Rails 项目中使用 Ember.js。我创建了 ToDo 应用程序的脚手架。将“emberjs-rails”gem 添加到我的 Gemfile 顶部附近。在 JQuery 之后将 ember 添加到我的 application.js 中:

   //= require jquery
   //= require jquery_ujs
   //= require ember
   //= require_tree .

然后,我将以下代码添加到 View 中,期望在访问它时看到文本字段:

    <script type="text/x-handlebars">
     {{view Em.TextField id="new-todo" placeholder="the text"}}
    </script>

当我访问此 View 时,我在控制台中收到以下错误:

   Error: assertion failed: Ember requires jQuery 1.6 or 1.7
   [Break On This Error]    

   if (!test) throw new Error("assertion failed: "+desc);

我首先假设这个错误是因为rails在我的应用程序中集成了旧版本的JQuery而引起的。但是当我检查调试器中的脚本部分时,我可以看到 JQuery 1.8 已加载:

   jQuery JavaScript Library v1.8.1

查看页面源代码,我可以看到 Ember 和 JQuery 都已添加。小 Handlebars 脚本也存在。然而,由于上述错误,它似乎没有被解释。

我在这里缺少什么,如何确保我的 Rails 应用程序满足 Ember 对 JQuery 的依赖?

编辑(解决方案): 正如 stef 下面指出的,我需要回退到 JQuery 1.7 版本。当前版本的 ember 不支持 JQuery 1.8。我正在使用 jquery-rails gem 来管理我的 jquery。我是从another SO post on how to specify the version of jquery学到的我想要加载(通过指定 jquery-rails 的相应版本。为了解决此问题,我使用 jquery-rails 版本 1.0.19 或更高版本。使用有趣的 ~> 符号不会加载下一个主要版本,在本例中为 2。

    gem 'jquery-rails', '~>1.0.19'

接下来,我在应用程序目录下运行bundle来安装所需版本的jquery-rails。 您可以做一个gem list来验证。 重新启动 Rails 并刷新浏览器后,我得到了文本框,所以现在看来​​ Ember.js 依赖关系已得到满足。

最佳答案

确保您使用正确版本的 jQuery(根据评论更新)。

Ember 最近停止捆绑其许多依赖项,因此您必须在 ember.js 之前手动包含它们。检查您的应用程序模板并确保 jQuery 包含在 Ember 之前(如果它是单独的文件),并且也包含在您的 application.js list 文件中。

关于jquery - Ember.js 对 JQuery 的依赖无法通过 Rails 得到满足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12329039/

相关文章:

javascript - 表单提交时的额外表单数据

javascript - 代码触发事件时如何使用.submit()

ruby-on-rails - rspec 接收方法未按预期工作

ios - Cocoapods 和 ruby​​_executable_hooks : no such file or directory

javascript - Keyup 包含过滤以阻止结果

javascript - 如何使用 browserify 在客户端 html 文档中使用 Node.js 包

ruby-on-rails - <%= link_to_function "Back", "history.back()"%> 在 new 和 edit.html.erb 中不起作用

ruby - compass ( ruby )编码错误

ruby-on-rails - 在什么情况下会从父进程获取 Ruby $LOAD_PATH?

javascript - 点击监听器内的发布请求未重定向到请求的页面