【问题标题】:How to precompile assets and avoid "Error: file isn't precompiled" on specific pages?如何预编译资产并避免在特定页面上出现“错误:文件未预编译”?
【发布时间】:2013-10-31 14:57:07
【问题描述】:

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

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

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

config.assets.initialize_on_precompile = false

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

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

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

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

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

我怎样才能解决它,这样这样的页面就不会抛出错误?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      您可以在 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" %>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-25
        • 2012-07-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多