【问题标题】:asset pre compilation for subdirectory manifest file子目录清单文件的资产预编译
【发布时间】:2012-01-08 11:41:31
【问题描述】:

我正在使用 Rails 3.1,在资产下我有这样的文件:

assets
  javascripts
    admin
        admin.js
        a1.js
    client
       client.js
        c1.js

admin.js 看起来像这样

//
//= require jquery
//= require jquery_ujs
//= require a1

client.js 看起来像这样

//
//= require jquery
//= require c1

在开发模式下一切正常。当我 rake assets:precompile 时,我在 public/assets 中看不到任何 javascript 文件。我确实看到了 public/assets 中的所有样式表。

我认为这与在这种情况下清单文件(admin.js 和 client.js)位于子目录中的事实有关。

那么 rake assets:precompile 不查看子目录是真的吗?

有关如何解决此问题的任何建议。我更喜欢按照我的布局方式保存文件,因为我有一堆 javascript 文件。

【问题讨论】:

    标签: ruby-on-rails asset-pipeline


    【解决方案1】:

    Rails 配置中有一个预编译数组,用于设置要预编译的文件。 any 目录中的 application.js 和 application.css。

    您需要将文件添加到预编译数组中:

    config.assets.precompile += ['admin/admin.js', 'client/client.js']

    它们应该可以通过以下方式访问:

    javascript_include_tag "admin/admin.js"

    javascript_include_tag "client/client.js"

    【讨论】:

      【解决方案2】:

      在 Rails 3.2.6 中,在子目录中管理 javascript 资产时,您可以将每个子目录的清单命名为“index.js”(而不是 OP 的“admin.js”和“client.js”),然后在config/environments/production.rb 说:

      config.assets.precompile += ['admin.js', 'client.js']
      

      Magic 会在 admin 子目录中查找并根据 index.js 中的规范编译,输出到 admin.js;对客户也是如此。

      然后可以通过以下方式访问资产:

      javascript_include_tag 'admin'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-14
        • 1970-01-01
        • 2013-04-16
        • 1970-01-01
        • 1970-01-01
        • 2015-11-05
        相关资源
        最近更新 更多