我正在尝试将我的应用程序升级到Rails3.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之类的?
发布于 2011-08-22 04:40:21
看起来rails只向资源路径添加了一个级别的子目录
您可以通过在rails控制台上运行Rails.application.config.assets.paths
来检查当前路径
在application.rb添加文件夹的绝对路径,如下所示
config.assets.paths += ["/path/to/lib/assets/javascript/foo"]
发布于 2011-10-10 02:16:26
不确定为什么rails只添加一级子目录,但您肯定可以在config/application.rb中向管道添加额外的(完全限定的)路径。这些文档指向答案:http://guides.rubyonrails.org/asset_pipeline.html#asset-organization
例如:
config.assets.paths << "#{Rails.root}/app/assets/flash"
https://stackoverflow.com/questions/7142481
复制