需要来自资产路径的子目录的资产文件

时间:2011-08-22 02:00:28

标签: ruby-on-rails-3.1 asset-pipeline sprockets

我正在尝试将我的应用程序升级到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等?

2 个答案:

答案 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"