我正在尝试在我的 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/