如何预编译资产并避免在特定页面上“错误:文件未预编译”?

时间:2013-10-22 16:06:29

标签: ruby-on-rails ruby-on-rails-3 heroku asset-pipeline

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

  

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

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

config.assets.initialize_on_precompile = false

(正如Error pushing to heroku - aborting my rake assets:precompileHeroku Help上建议的那样)

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

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

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

  

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

如何修复它以使这些页面不会抛出错误?

2 个答案:

答案 0 :(得分:1)

您需要将文件添加到assets.precompile

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

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

答案 1 :(得分:0)

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

custom.js 中添加以下内容。 (假设ace.js位于vendor / javascripts中)

//= require ace

通过在 application.rb

中添加以下内容,将文件添加到编辑列表中
config.assets.precompile += %w( custom.js )

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

<%= javascript_include_tag "custom" %>