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

bra*_*che 5 ruby-on-rails-3.1 sprockets asset-pipeline

我正在尝试将我的应用程序升级到Rails 3.1,并且我有很多自定义Javascript文件,我正在尝试迁移到新的资产管道.

我当前(即3.1之前的)目录结构具有类似于:

public/
    foo/
        model.js
        controller.js
        etc...
Run Code Online (Sandbox Code Playgroud)

所以,我正在尝试将它们移到lib/assets/javascripts并保持foo /子目录完整(而不是制作foo_model.js,foo_controller.js等).

在我的application.js中,我试图这样做:

//= require foo/model
Run Code Online (Sandbox Code Playgroud)

//= require 'foo/model'
Run Code Online (Sandbox Code Playgroud)

但这些都行不通.Rails总是给我一个错误页面并说:

couldn't find file 'foo/model.js'
Run Code Online (Sandbox Code Playgroud)

如果它们不在子目录中,我确实测试了正确包含的东西,所以我知道这不仅仅是我的lib/assets目录不在include路径中.所以我想我只是想知道是否有办法做到这一点,或者我应该只是扁平化目录并使用foo_model.js等?

YOU*_*YOU 6

看起来rails只会将一级子目录添加到资产路径

您可以通过Rails.application.config.assets.paths在rails控制台上运行来检查当前路径

在application.rb中添加文件夹的绝对路径

config.assets.paths += ["/path/to/lib/assets/javascript/foo"]
Run Code Online (Sandbox Code Playgroud)