2

我可能应该首先提到我没有预编译。

我有 8 个不同的 Js 文件(7 个,不包括 Application.js),当我使用<%= javascript_include_tag 'application' %>它时会打印出来:

<script src="/assets/admin.js?body=1" type="text/javascript"></script>
<script src="/assets/brand.js?body=1" type="text/javascript"></script>
<script src="/assets/category.js?body=1" type="text/javascript"></script>
<script src="/assets/home.js?body=1" type="text/javascript"></script>
<script src="/assets/product.js?body=1" type="text/javascript"></script>
<script src="/assets/setting.js?body=1" type="text/javascript"></script>
<script src="/assets/user.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>

因此,我的一些 jQuery(使用 Toggles)无法工作,因为它们被多次执行。

如何让它简单地使用 application.js?

我的 Application.js 文件:

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require jquery.ui.all
//= require_tree .
4

4 回答 4

3

除了//= require_tree .像迈克所说的那样删除。尝试以下命令:

$ rake tmp:clear tmp:create assets:clean

这将清除您的临时文件和缓存的资产文件。

此外,如果您只是想要单个application.js而不是 7 个.js包含脚本标签。设置以下选项config/environments/development.rb

# Expands the lines which load the assets
  config.assets.debug = false

希望能帮助到你

于 2013-05-17T15:11:23.950 回答
0

//= require_tree .将所有内容加载到与该清单 ( .) 相同的目录中。

如果您想手动包含您的 javascript,只需删除该行。但是,如果您在每个页面上都包含所有 javascript,请将该行保留在那里并删除您的包含。

于 2013-05-17T14:59:55.683 回答
0

我有同样的问题。检查您是否没有添加application.html.erb其他 js 文件。因为如果你有//= require_tree.On application.js 它会添加所有内容,所以如果你添加它,application.html.erb它们会重复。

于 2013-11-07T01:04:40.843 回答
0

您的问题是 application.js 加载当前目录中的所有 js 文件,因为“//= require_tree”行。并且可能您对不同页面中的 html 元素使用相同的名称(id 和类),因此一种解决方案是继续使用“//= require_tree”。在您的 application.js 中并为页面中的每个元素指定唯一名称,另一种解决方案是删除“// = require_tree”。从您的 application.js 并使用它:

<%= javascript_include_tag "application", controller_name %>

这里当你生成一个新的控制器时,rails会自动为你创建一个带有控制器名称的javascript文件,当你为javascript_include_tag添加“controller_name”选项时,我们将添加当前控制器的js文件,最后你放置您在这些文件切换控制器中的 javascript 说明,我们开始吧。

我发现这种方法非常好,但还有其他解决方案,您可以在此处找到该主题的其他答案:

Rails 3.1 资产管道:如何加载特定于控制器的脚本?

祝你好运 ;)

于 2013-05-17T15:21:35.003 回答