Rails 3.1资产管道Javascript-通过jQuery指定页面加载->;
这让我很沮丧。我希望有人能帮我 在我的application.js文件中,我有以下内容: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
//= 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定义了全局函数。再次感谢。