繁体   English   中英

生产中的Rails Javascript 404(资产管道)

[英]Rails Javascript 404s in production (asset pipeline)

我将Adobe Edge与Rails结合使用,并在生产服务器上获取一些Javascript文件的404(所有功能在开发服务器上都可以正常工作)。

这些是我的JavaScript文件

application.js
edge.1.5.0.min.js
ink-falling_edge.js.erb
ink-falling_edgeActions.js
ink-falling_edgePreload.js.erb

在application.js中

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_tree .

edge.1.5.0.min.jsink-falling_edge.js.erbink-falling_edgeActions.js无法加载。 它们应该由ink-falling_edgePreload.js.erb动态加载。

ink-falling_edgePreload.js.erb我有:

function loadResources(a,d) {
  AdobeEdge.preload = AdobeEdge.preload || [];
  AdobeEdge.preload.q = AdobeEdge.preload.q || [];
  d || !isCapable() ? filesToLoad = a : AdobeEdge.preload.busy ? AdobeEdge.preload.q.push({files:a, callback:edgeCallback}) : AdobeEdge.requestResources(a,edgeCallback)
}

 aLoader = [
  { load: "<%= asset_path('edge.1.5.0.min.js') %>" },
        { load: "<%= asset_path('ink-falling_edge.js.erb') %>" },
        { load: "<%= asset_path('ink-falling_edgeActions.js') %>" }];

doDelayLoad=false;

loadResources(aLoader, doDelayLoad);

我只修改了aLoader使用asset_path ,其余产生的Adobe边缘的代码。

当我加载页面时。 我在Javascript控制台中得到了这个:

GET http://.../assets/ink-falling_edge-deca9b287a7502bef69078b737f58a0b.js 404 (Not Found) application-419438724fb62a953134d8263f3f4882.js:8
GET http://.../assets/ink-falling_edgeActions-9bdaa1845a29b15bd2562058432de721.js 404 (Not Found) application-419438724fb62a953134d8263f3f4882.js:8
GET http://.../assets/edge.1.5.0.min-610ab04bb1d4d0ad9a2a845821f04bdf.js 404 (Not Found) application-419438724fb62a953134d8263f3f4882.js:8
GET http://.../assets/edge.1.5.0.min-610ab04bb1d4d0ad9a2a845821f04bdf.js 404 (Not Found) application-419438724fb62a953134d8263f3f4882.js:8
GET http://.../assets/ink-falling_edge-deca9b287a7502bef69078b737f58a0b.js 404 (Not Found) application-419438724fb62a953134d8263f3f4882.js:8
GET http://.../assets/ink-falling_edgeActions-9bdaa1845a29b15bd2562058432de721.js 404 (Not Found) application-419438724fb62a953134d8263f3f4882.js:8

如果我注释掉了动态加载部分,则Adobe Edge动画将不起作用。

在引用导致404错误的这些Javascript文件时,我做错了什么?

谢谢!

我不能肯定地说,但是我怀疑您没有更新application.rb来将这些文件预编译为独立JS。

您需要使用直接URL访问的任何Javascript或CSS文件(这是您的加载脚本正在执行的操作)都需要添加到application.rb中的config.assets.precompile中。 因此,您需要添加以下行:

config.assets.precompile += %w[edge.1.5.0.min.js ink-falling_edge.js ink-falling_edgeActions.js]

默认情况下,JavaScript文件不会预先编译为显示在URL上的资产-它们只是被卷入application-.js和其他使用清单的控制器特定的js文件中。 如果要直接访问URL,则需要将其添加到此列表中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM