【问题标题】:Rails Asset Pipeline: Precompile Assets outside of manifest?Rails 资产管道:在清单之外预编译资产?
【发布时间】:2011-09-15 20:25:58
【问题描述】:

我有某些特定于页面的 js 和 css 文件:

  1. 不想在开发中运行(即跟踪代码)
  2. 不想在每个页面上运行

或两者兼而有之。

在 Rails 3.0.x 中,我会简单地从需要它们的视图中调用它们,如下所示:

- if some_condition
  = javascript_include_tag 'page_specific'

现在,使用资产管道,看起来我必须将它们包含在清单中(因此在应用程序的每个页面中),否则它们将不会被预编译。由于我使用 Heroku 进行部署,因此不允许延迟编译。

如何手动预编译资产目录中的每个文件,而不必将它们全部包含在清单中?这可能吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.1 asset-pipeline


    【解决方案1】:

    只是不要像在 rails 3.0.x 中那样将页面特定资产放在清单中并在需要时包含它们,预编译器会将这些特定页面编译为单独的文件。

    就我个人而言,我只是检查我知道该页面的 dom 中的某个元素。如果未找到该元素,则不执行其余代码。

    $(function(){
       if( $("#page_specific_element").length !== 1 ) return;
       //page specific functions
    });
    

    【讨论】:

    • 好的,我会接受你的回答,因为我喜欢你展示的“检查元素”,但是,我发现问题是预编译器设置为忽略所有“普通”.js和未命名为“应用程序”的 .css 文件,如果您希望对它们进行预编译,则必须覆盖该文件或在末尾添加处理器扩展名(.coffee 或 .scss)。
    • 您必须告诉 sprockets 您想要包含这些文件,最好的方法是在 application.css 中添加“//= require my_file”
    猜你喜欢
    • 2014-08-28
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 2012-10-01
    相关资源
    最近更新 更多