44

我刚刚将我的应用程序4.1.04.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
4

5 回答 5

50

响应 Heroku 的敦促,Rails 维护人员已将 sprockets_better_errors gem 的健全性检查合并到 Rails 4.1 中。见https://github.com/rails/sprockets-rails/pull/84

目的是揭示在开发模式下运行应用程序时您会在生产中看到的资产管道错误。

您可能javascript_include_tag在应用程序布局中使用 a 而不是将 JavaScript 文件放在app/assets/javascripts/文件夹中。

您可以将文件移动到app/assets/javascripts/文件夹。

或者,您需要更新config/application.rb文件以包括:

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

请注意,文件名不应包含 .js 文件扩展名。

于 2014-04-10T01:07:02.500 回答
33

如果您stylesheet_link_tag params[:controller]在应用程序布局标题中添加了类似的内容,因为您在不同的控制器上有单独的 JS 应用程序但具有相同的基本布局,您会对此感到非常恼火。在预编译所有资产的情况下克服这个问题并继续工作(但可能不是最终解决方案)的快速方法是将以下内容添加到 /config/initializers/assets.rb:

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

请注意,这对于.js.coffee和来说也是如此.css.scss.js并且.css就足够了。

于 2014-09-28T07:09:07.917 回答
5

理想情况下,@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

上面的代码在跳过活动管理文件的同时预编译资产。这样它们就不会被处理两次或轮流导致错误。

于 2015-02-06T12:41:02.003 回答
3

是的,在浏览器上读取错误,我所做的只是添加以下代码行:

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

到 /config/initializers/assets.rb 文件,它起作用了。

于 2015-02-27T16:19:29.463 回答
0

你可以<%= javascript_include_tag 'xxx' %>从你的erb中删除,并在你身上assets/javascript/name_space/index.js.coffee附加这个

#= require ./xxx
于 2017-03-21T07:58:33.830 回答