我正在使用带有Rails的Adobe Edge并在我的生产服务器上获取404用于某些Javascript文件(在开发服务器上一切正常)。
这些是我的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.js
,ink-falling_edge.js.erb
和ink-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 Edge代码。
加载页面时我在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文件时,我有什么问题吗?
谢谢!
答案 0 :(得分:2)
我不能肯定地说,但我怀疑你没有更新你的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,则需要将其添加到此列表中。