Ruby on rails 将供应商/资产/Java脚本添加到我的有效资产路由

Ruby 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

我想让这一切顺利,但这让我发疯。我已经准备好了

应用程序.rb

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