我正在尝试将我的应用程序升级到Rails 3.1,并且我有很多自定义Javascript文件,我正在尝试迁移到新资产管道。
我当前(即3.1之前的)目录结构类似于:
public/
foo/
model.js
controller.js
etc...
所以,我试图将它们移到lib / assets / javascripts并保持foo /子目录不变(而不是制作foo_model.js,foo_controller.js等)。
在我的application.js中,我尝试过:
//= require foo/model
和
//= require 'foo/model'
但这些都行不通。 Rails总是给我一个错误页面并说:
couldn't find file 'foo/model.js'
我测试过,如果它们不在子目录中,那么事情就会被正确包含在内,所以我知道这不仅仅是因为我的lib / assets目录不在include路径中。所以我想我只是想知道是否有办法做到这一点,或者我应该只是扁平化目录并使用foo_model.js等?
答案 0 :(得分:6)
看起来rails只会将一个级别的子目录添加到资产路径
您可以通过在rails console
运行Rails.application.config.assets.paths
来检查当前路径
在application.rb中添加文件夹的绝对路径,如
config.assets.paths += ["/path/to/lib/assets/javascript/foo"]
答案 1 :(得分:1)
不确定为什么rails只添加一级子目录,但您肯定可以在config / application.rb中向管道添加其他(完全限定的)路径。文档会得到答案:http://guides.rubyonrails.org/asset_pipeline.html#asset-organization
例如:
config.assets.paths << "#{Rails.root}/app/assets/flash"