Ruby on rails 将供应商/资产/Java脚本添加到我的有效资产路由
我想让这一切顺利,但这让我发疯。我已经准备好了 应用程序.rbRuby on rails 将供应商/资产/Java脚本添加到我的有效资产路由,ruby-on-rails,ruby-on-rails-3,asset-pipeline,Ruby On Rails,Ruby On Rails 3,Asset Pipeline,我想让这一切顺利,但这让我发疯。我已经准备好了 应用程序.rb config.assets.paths << Rails.root.join("vendor", "assets", "javascripts").to_s config.assets.path从您提供的信息中不容易看出问题所在,因为我认为问题在别处 资产管道的目的是将所有Java脚本放在一个文件中。该文件包含在HTML文档中。所以关键是一个大的JS文件。嗯,可能会更复杂,但我认为这不一定是你的情况 例如,在布局ERB
config.assets.paths << Rails.root.join("vendor", "assets", "javascripts").to_s
config.assets.path从您提供的信息中不容易看出问题所在,因为我认为问题在别处
资产管道的目的是将所有Java脚本放在一个文件中。该文件包含在HTML文档中。所以关键是一个大的JS文件。嗯,可能会更复杂,但我认为这不一定是你的情况
例如,在布局ERB中(通常app/views/layout/application.ERB
):
当请求HTML页面时,它会请求“application.js”,并以一种将供应商js代码嵌入到此文件的方式生成该页面(请注意,该页面中没有路径)
最后一件事——在生产环境中测试行为非常重要,因为通常生成的JS文件将由nginx/apache提供服务<代码>rake资产:预编译是一个好的开始。您可以添加:
rails console
Rails.application.config.assets.paths.each do |path|; puts path; end
到您的application.js
文件。我相信供应商已经包含在您的资产路径中,请使用rails控制台进行检查
//= require ./lib/ext-all-debug.js
然而,最简单的事情可能是这样
- 将ext放在app/assets/javascripts/lib
- require_树将已加载它或是显式的
application.js
//= require ./ext-all-debug.js
<%= javascript_include_tag "ext" %>
如果你真的想要它在供应商
- 创建目录vendor/assets/javascripts/ext
- 创建清单文件vendor/assets/javascripts/ext/index.js
- 将ext-all-debug.js放入vendor/assets/javascripts/ext/
index.js的代码
//= require ext
application.js的代码
//= require ./ext-all-debug.js
<%= javascript_include_tag "ext" %>
这是索引清单文件所在目录的名称
重新启动rails服务器
如果您不想通过application.js加载extjs,即只想在特定页面上包含extjs库
config.assets.paths << Rails.root.join("vendor", "assets", "externals").to_s
阅读更新
问题似乎与EXT有自己的结构路径构建和相对路径这一事实有关
我解决了这个问题,保留了整个ext目录结构(不在任何地方分割图像),并将其添加到一个vendor/externals目录(由我创建)。然后,我添加了以下路径:
config.assets.path
<%= javascript_include_tag "ext" %>
config.assets.paths << Rails.root.join("vendor", "assets", "externals").to_s