2

我正在开发 Rails 3.2 应用程序,但不知何故我的 javascript 代码被执行了两次,我不知道为什么。

我已经搜索了 application.js 文件,它只包含在我的资产文件夹中,而不是在我的公用文件夹中。我也只有每个 js 文件的一份副本,所以它可能不是由于资产管道。

这是我的 application.js 文件。

//= require jquery
//= require jquery_ujs
//= require jquery_nested_form
//= require jquery.ui.all
//= require myownjs
//= require_tree .

实际上,我已经完成了一个几乎类似的项目,但没有 jquery 嵌套表单,并且问题不存在,所以我的直觉告诉我,这可能是由于我使用的 gem 反复调用我的代码或由于我的 javascript 的顺序,包括但我是网络编程新手,我不确定这是否真的有意义。但是,我确实尝试删除嵌套表单的 require 行,但这并没有什么不同。

有人可以通过建议错误可能是什么来帮助我吗?

这是另一个项目的 application.js。

//= require jquery
//= require jquery_ujs
//= require jquery.ui.all
//= require myowncodes

//= require_tree .
4

2 回答 2

4

//= require_tree .已经包含.目录中的所有内容 - 这将是您的application.js文件所在的任何目录(通常是 /app/assets/javascripts/)。我的猜测是您列出的许多其他文件已经在该目录中,并且可以从application.js文件中删除这些条目。

或者,如果您想专门将应加载的文件列入白名单,//= require_tree .请从您的 application.js 文件中删除。

于 2013-01-06T17:04:12.023 回答
2
//= require_tree .

此行将加载 application.js 文件文件夹中的所有文件。要完全控制正在加载的文件,您可以删除上面的行并加载单个所需的文件,或者您可以创建子文件夹并使用

//= require_directory <sub_directory_name>

这将加载该文件夹中的所有文件。此方法将仅加载您指定的文件。我建议不要使用 require_tree,以便更好地控制应用程序加载的文件。

在您的情况下,删除 require_tree 行应该可以解决您的问题。我希望它有帮助!

于 2013-01-06T17:16:07.170 回答