Rails 3.1资产管道Javascript-通过jQuery指定页面加载->;

Rails 3.1资产管道Javascript-通过jQuery指定页面加载->;,jquery,ruby-on-rails-3,coffeescript,asset-pipeline,Jquery,Ruby On Rails 3,Coffeescript,Asset Pipeline,这让我很沮丧。我希望有人能帮我 在我的application.js文件中,我有以下内容: //= require jquery //= require jquery_ujs //= require jquery.remotipart //= require jquery-ui //= require jquery.purr //= require jquery.slides //= require best_in_place //= require twitter/bootstrap //= r

这让我很沮丧。我希望有人能帮我

在我的application.js文件中,我有以下内容:

//= require jquery
//= require jquery_ujs
//= require jquery.remotipart
//= require jquery-ui
//= require jquery.purr
//= require jquery.slides
//= require best_in_place
//= require twitter/bootstrap
//= require_tree .
我是否需要在一个或所有特定于页面的Java脚本中包含以下内容(或其等效内容)?我知道在生产过程中,它们都与资产管道合并到一个文件中,所以。。。我是否要引出一个文件,没有文件,所有文件都有这个

jQuery ->
我发现,在所有特定于资源的Java脚本的顶部添加“jQuery->”或“$->”几乎是可行的。我的问题是我有一个资源,除非我删除“jQuery->”,否则什么都不起作用。由于该资源的JS文件与另一个资源的JS文件进行函数交互等,因此我也必须从中删除“jQuery->”,这会导致意外行为

只是想知道资产管道中js文件的最佳实践是什么,并让它们作为一个整体一起工作


谢谢

在使用
require_tree
时,您不能依赖于加载资产的顺序。因此,如果要使用相互依赖的javascript文件,请确保它们的顺序正确

因此,不是:

//= require_tree .
使用

然后调用函数或您在评论javascript文件的帖子中定义的任何东西

此外,当您像我假设的那样使用coffeescript时,您必须使用名称空间,以便在整个应用程序中都可以使用变量

比如说

posts.js.coffee

$ ->
  window.my_super_variable = 'super'

  window.my_super_function = (message) ->
    alert(message)
$ ->
  my_super_variable += ' awesome'

  my_super_function(my_super_variable)
comments.js.coffee

$ ->
  window.my_super_variable = 'super'

  window.my_super_function = (message) ->
    alert(message)
$ ->
  my_super_variable += ' awesome'

  my_super_function(my_super_variable)

如果在定义变量或函数时不使用
窗口
,它们将无法全局访问。

这正是我需要的帮助。感谢您抽出时间整理此回复。现在一切都正常了,我在application.js中指定了加载顺序,并用window定义了全局函数。再次感谢。