这些答案对我帮助很大!如果有人想要多一点...
- 如果您希望它们预编译,您需要将 javascripts 放入清单中。但是,如果您需要每个 javascript 文件,
application.js.coffee
那么每次导航到不同页面时都会加载所有 javacsript,并且执行特定于页面的 javascript 的目的将落空。
因此,您需要创建自己的清单文件(例如speciifc.js
),它将需要所有特定于页面的 javascript 文件。另外,修改require_tree
自application.js
应用程序/资产/javascripts/application.js
//= require jquery
//= require jquery_ujs
//= require_tree ./global
应用程序/资产/javascripts/specific.js
//= require_tree ./specific
然后在您environments/production.rb
使用 config 选项将此清单添加到预编译列表中,
config.assets.precompile += %w( specific.js )
完毕!所有应该始终加载的共享javascripts 将放在app/assets/javascripts/global
文件夹中,而页面特定的 javascripts 放在app/assets/javascripts/specific
. 您可以简单地从视图中调用特定于页面的 javascripts
<%= javascript_include_tag "specific/whatever.js" %>
//.js 是可选的。
这已经足够了,但我也想利用它javascript_include_tag params[:controller]
。当您创建控制器时,会app/assets/javascripts
像其他人提到的那样生成关联的 coffeescript 文件。有真正的控制器特定的javascripts,只有当用户到达特定的控制器视图时才会加载它们。
所以我创建了另一个清单 controller-specific.js
app/assets/javascripts/controller-specific.js
//= require_directory .
这将包括与控制器关联的所有自动生成的咖啡脚本。此外,您需要将其添加到预编译列表中。
config.assets.precompile += %w( specific.js controller-specific.js )