Атрибут отфильтрован и не будет обслуживаться: добавьте `config.assets.precompile
Я просто перенес свое приложение в rails 4.1.0
из 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
Ответы
Ответ 1
Отвечая на призыв от Heroku, сопровождающие Rails объединили проверки здравомыслия с драгоценными камнями sprockets_better_errors в Rails 4.1. См. https://github.com/rails/sprockets-rails/pull/84
Цель состоит в том, чтобы выявить ошибки конвейера, которые вы увидите в процессе создания приложения в режиме разработки.
Вероятно, вы используете javascript_include_tag
в макете приложения вместо размещения ваших файлов JavaScript в папке app/assets/javascripts/.
Вы можете перенести файлы в папку app/assets/javascripts/.
Кроме того, вам необходимо обновить файл config/application.rb, чтобы включить:
config.assets.precompile += %w( my_js )
Обратите внимание, что имя файла не должно содержать расширение .js.
Ответ 2
Если вы добавили что-то вроде stylesheet_link_tag params[:controller]
в заголовок макета приложения, потому что у вас есть отдельные приложения JS на разных контроллерах, но с одинаковой базовой компоновкой, вы будете очень недовольны этим. Быстрый способ преодолеть это и продолжить работу (но, возможно, не окончательное решение) со всеми предварительно скомпилированными активами - добавить следующее в /config/initializers/assets.rb:
Rails.application.config.assets.precompile += [/.*\.js/,/.*\.css/]
Обратите внимание, что это так же, как и для .js.coffee
и .css.scss
, .js
и .css
.
Ответ 3
В идеале решение @zilojko работает, но у меня также есть активный администратор в этом приложении. Поэтому, посмотрев немного дальше, я нашел следующее решение:
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
Приведенный выше код прекомпиляции активов при пропуске активных файлов администратора. так что они не обрабатываются дважды или вне очереди, что приводит к ошибкам.
Ответ 4
Да, прочитав ошибку в браузере, все, что я сделал, это добавить следующую строку кода:
Rails.application.config.assets.precompile += %w( depot.css )
В файл /config/initializers/assets.rb и он сработал.
Ответ 5
Вы можете удалить <%= javascript_include_tag 'xxx' %>
с вашего erb, а в assets/javascript/name_space/index.js.coffee
добавить это
#= require ./xxx