如何预编译资产并避免在特定页面上出现"Error: file isn't precompiled"?



当我将代码推送到 Heroku 时,我收到以下消息:

预编译资产

失败,启用运行时资产编译

运行时编译可能会导致问题,因此我在 config/application.rb 中添加了以下行:

config.assets.initialize_on_precompile = false

(正如推送到 heroku 时出错 - 中止我的 rake 资产:预编译和 Heroku 帮助中所建议的那样)

这允许预编译工作。但是,我的一些页面包含其他JavaScript文件。例如,我通过在特定页面上放置标签,在某些页面中包含来自"vendor/javascripts"的文件:

<%= javascript_include_tag "src/ace.js" %>

当我访问这样的页面时,它会导致以下错误(当预编译工作时):

ActionView::Template::Error: src/ace.js 未预编译

如何修复它,以便此类页面不会引发错误?

您需要

将文件添加到assets.precompile 中。

将以下内容添加到您的config/environments/production.rb以编译所有 css/js 文件:

config.assets.precompile = ['*.js', '*.css']

您可以在javascript文件中添加ace.js和其他必需的文件,例如"custom.js"然后,您可以使用常规代码来包含文件

自定义.js中添加以下内容。(假设 ace.js 驻留在供应商/JavaScript 中)

//= require ace

通过在应用程序.rb 中添加以下内容将文件添加到编译列表

config.assets.precompile += %w( custom.js )

现在,您可以使用javascript_tag包含源

<%= javascript_include_tag "custom" %>

相关内容

最新更新