web-dev-qa-db-ja.com

アセットは除外され、提供されません: `config.assets.precompileを追加します

アプリケーションをRails 4.1.0 from 4.1.rc2。 JSファイルのこれらのエラーの取得を開始しました

ActionView::Template::Error: Asset filtered out and will not be served: add `config.assets.precompile += %w( my_js )` to `config/application.rb` and restart your server
45
AnkitG

Herokuからの促しに応えて、Railsメンテナはsprockets_better_errors gemからの健全性チェックをRails 4.1にマージしました。 https:// github。 com/Rails/sprockets-Rails/pull/84

その目的は、アプリを開発モードで実行したときに本番環境で表示されるアセットパイプラインエラーを明らかにすることです。

JavaScriptファイルをapp/assets/javascripts /フォルダーに配置する代わりに、アプリケーションレイアウトでjavascript_include_tagを使用している可能性があります。

ファイルをapp/assets/javascripts /フォルダーに移動できます。

または、config/application.rbファイルを更新して以下を含める必要があります。

config.assets.precompile += %w( my_js )

ファイル名には.jsファイル拡張子を含めないでください。

51
Daniel Kehoe

アプリケーションレイアウトヘッダーにstylesheet_link_tag params[:controller]のようなものを追加した場合、異なるコントローラー上に別個のJSアプリケーションがありますが、基本レイアウトは同じであるため、これに非常に悩まされます。これを乗り越えて、すべてのアセットをプリコンパイルして作業を続行する(ただし、最終的なソリューションではない)ための簡単な方法は、次を/config/initializers/assets.rbに追加することです。

Rails.application.config.assets.precompile += [/.*\.js/,/.*\.css/]

これは.js.coffee.css.scssにも当てはまることに注意してください。.js.cssで十分です。

32
zmilojko

理想的には、@ zmilojkoによる解決策は機能しますが、このアプリにはアクティブな管理者もいます。

Rails.application.config.assets.precompile += %w(*.svg *.eot *.woff *.ttf *.gif *.png *.ico)
Rails.application.config.assets.precompile << /\A(?!active_admin).*\.(js|css)\z/

上記の行を/config/initializers/assets.rbに追加するだけです

上記のコードは、アクティブな管理ファイルをスキップしながらアセットをプリコンパイルします。そのため、2回処理されたり、順番がずれてエラーが発生したりすることはありません。

4
whizcreed

はい、ブラウザでエラーを読み取り、次のコード行を追加するだけでした。

Rails.application.config.assets.precompile += %w( depot.css )

/config/initializers/assets.rbファイルに、それは働きました。

3
Jorge Zapata

<%= javascript_include_tag 'xxx' %>あなたのエルブから、そしてあなたの中でassets/javascript/name_space/index.js.coffee、これを追加

#= require ./xxx
0
fangxing