Rails assets pipeline

hiveer · 2014年04月17日 · 最后由 hiveer 回复于 2014年04月17日 · 2502 次阅读

我想实现的是公用的前端文件放到 application 里面,然后和项目对象相关的前端文件放到对应的 controller 里面去引用。 比如: assets/javascripts/desktop/* 里面的东西 我没有在 application.js 里面包含,然后放到具体的某个 view 去引用 <%= javascript_include_tag params[:controller] %>

我现在的做法是在 config/application.rb 里面配置需要 precompile 的文件,也就是在 assets/javascripts/desktop/* 里面的东东。

但是在 production 发现 assets/javascripts/desktop/* 里面的 js 都没有被 compile,然后<%= javascript_include_tag params[:controller] %>取到的路径也是没有变的老路径

如果 config.assets.precompile 配置没有问题,那就清空一下 tmp 目录试试看?

@Ionre

config.assets.precompile += %w(projects.js projects.css jquery.min.js jquery.fileupload.js 
                                   jquery.iframe-transport.js jquery.ui.widget.js)

tmp 是每次在发布的时候我都清楚了的,你看看这个配置

#2 楼 @hiveer 带上目录结构 desktop/...

#3 楼 @lonre 嗯,成功了 Good!谢谢啦

感觉你的这个配置写的有点不好,

config.assets.precompile += %w(projects.js projects.css jquery.min.js jquery.fileupload.js 
                                 jquery.iframe-transport.js jquery.ui.widget.js)

jquery.min.js jquery.fileupload.js jquery.iframe-transport.js jquery.ui.widget.js 这些资源不应该单独编译的,应该是在你的 params[:controller] 或者 application.js 文件里包含 (require),然后你只需要编译 params[:controller] 这个资源文件,这样的话就能把 jquery.min.js jquery.fileupload.js jquery.iframe-transport.js jquery.ui.widget.js 合并到 params[:controller] 文件里了,否则 jquery.min.js,jquery.fileupload.js 等等这些文件你还是要单独产生 http 请求的。

#6 楼 @kayakjiang 嗯 确实 我本来的思想就是将可以分离加载的都分离加载。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号