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 はアセット パスに 1 レベルのサブディレクトリしか追加しないようです

Rails.application.config.assets.pathsRailsコンソールで実行することで、現在のパスを確認できます

application.rb のようにフォルダーの絶対パスを追加します

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

Rails が 1 レベルのサブディレクトリしか追加しない理由はわかりませんが、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 に答える