web-dev-qa-db-fra.com

Élément filtré et ne sera pas servi: ajoutez `config.assets.precompile

Je viens de migrer mon application vers Rails 4.1.0 de 4.1.rc2. J'ai commencé à obtenir ces erreurs pour mes fichiers 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

Répondant à la demande de Heroku, les responsables de Rails ont fusionné les vérifications de la santé mentale de la gemme sprockets_better_errors dans Rails 4.1. Voir https: // github. com/Rails/pignons-Rails/pull/84

L'objectif est de révéler les erreurs de pipeline d'actifs que vous verriez en production lorsque vous exécutez l'application en mode développement.

Vous utilisez probablement un javascript_include_tag dans une présentation d'application au lieu de placer vos fichiers JavaScript dans le dossier app/assets/javascripts/.

Vous pouvez déplacer vos fichiers vers le dossier app/assets/javascripts/.

Alternativement, vous devrez mettre à jour votre fichier config/application.rb pour inclure:

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

Notez que le nom de fichier ne doit pas inclure l'extension de fichier .js.

51
Daniel Kehoe

Si vous avez ajouté quelque chose comme stylesheet_link_tag params[:controller] à l'en-tête de mise en page de votre application, car vous avez des applications JS distinctes sur différents contrôleurs mais avec la même mise en page de base, cela vous ennuiera beaucoup. Un moyen rapide de surmonter cela et de continuer à travailler (mais peut-être pas une solution finale) avec tous les actifs précompilés consiste à ajouter ce qui suit au fichier /config/initializers/assets.rb:

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

Notez que c'est la même chose pour .js.coffee et .css.scss, .js et .css suffisent.

32
zmilojko

Idéalement, la solution de @zmilojko fonctionne mais j'ai également un administrateur actif dans cette application .. donc après avoir regardé un peu plus loin, j'ai trouvé la solution suivante:

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

Ajoutez simplement les lignes ci-dessus à: /config/initializers/assets.rb

Le code ci-dessus précompile les actifs tout en ignorant les fichiers d'administration actifs. afin qu'ils ne soient pas traités deux fois ou hors tour, ce qui entraîne des erreurs.

4
whizcreed

Oui, en lisant l'erreur sur le navigateur, je n'ai fait qu'ajouter la ligne de code suivante:

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

Pour le fichier /config/initializers/assets.rb et cela a fonctionné.

3
Jorge Zapata

Vous pouvez dételer <%= javascript_include_tag 'xxx' %> de votre erb, et en vous assets/javascript/name_space/index.js.coffee, ajoutez ceci

#= require ./xxx
0
fangxing