我正在使用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文件。
答案 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'