Rails Asset Pipeline:在清单之外预编译资产?

时间:2011-09-15 20:25:59

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

我有一些特定于页面的js和css文件,我要么:

  1. 不想在开发上运行(即跟踪代码)
  2. 不想在每个页面上运行
  3. 或两者兼而有之。

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

    - if some_condition
      = javascript_include_tag 'page_specific'
    

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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