5

我正在尝试将我的应用程序升级到 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 目录不在包含路径或其他东西中。所以我想我只是想知道是否有办法做到这一点,或者我应该只是扁平化目录并使用 foo_model.js 等?

4

2 回答 2

6

看起来 Rails 只向资产路径添加了一级子目录

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

在 application.rb 添加文件夹的绝对路径,例如

config.assets.paths += ["/path/to/lib/assets/javascript/foo"]
于 2011-08-22T04:40:20.753 回答
1

不知道为什么 rails 只添加一级子目录,但您肯定可以在 config/application.rb 中添加额外的(完全限定的)路径到管道。文档导致答案: http: //guides.rubyonrails.org/asset_pipeline.html#asset-organization

例如:

config.assets.paths << "#{Rails.root}/app/assets/flash"

于 2011-10-10T02:16:25.533 回答