Подтвердить что ты не робот

Атрибут отфильтрован и не будет обслуживаться: добавьте `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
4b9b3361

Ответ 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