子目录清单文件的资产预编译

时间:2011-11-29 03:46:35

标签: ruby-on-rails asset-pipeline

我正在使用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资产:预编译然后我没有在公共/资产中看到任何javascript文件。我确实在公共/资产中看到了所有的样式表。

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

rake资产是这样的:预编译不会查看子目录吗?

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

2 个答案:

答案 0 :(得分:11)

Rails配置中有一个预编译数组,用于设置要预编译的文件。 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"

答案 1 :(得分:4)

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

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

魔术幕后将在admin子目录中查找并根据index.js中的规范进行编译,输出到admin.js;同样为客户。

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

javascript_include_tag 'admin'
相关问题