将Adobe Edge脚本添加到Rails资产管道中

时间:2013-04-27 23:56:45

标签: javascript jquery ruby-on-rails asset-pipeline adobe-edge

这可能是将带有依赖项的外部脚本引入Rails的简单案例。

我试图让我的Adobe Edge生成的动画在我的Rails应用程序中运行,第一步是包含所有Adobe Edge生成的js文件,但到目前为止我只是为Application.js文件中包含的所有Edge文件获取了大量 404 Not Found Errors

这是我的Application.js文件

//= require jquery
//= require jquery_ujs
//= require underscore
//= require backbone
//= require california_internet
//= require hero_edgePreload
//= require edge_includes/edge.1.5.0.min
//= require hero_edge
//= require hero_edgeActions

以下是Edge的Preloader.js试图找到一些文件......

aLoader=[{load:"edge_includes/jquery-1.7.1.min.js"},{load:"edge_includes/edge.1.5.0.min.js"},{load:"hero_edge.js"},{load:"hero_edgeActions.js"}]

2 个答案:

答案 0 :(得分:1)

我实现此目的的方法是将hero_edgePreload.js更改为hero_edgePreload.js.erb

并改变:

aLoader=[
  {load:"edge_includes/jquery-1.7.1.min.js"},
  {load:"edge_includes/edge.1.5.0.min.js"},
  {load:"hero_edge.js"},
  {load:"hero_edgeActions.js"}
];

要:

aLoader=[
  // {load:"edge_includes/jquery-1.7.1.min.js"}, Already required in application.js
  {load:'<%= asset_path("edge.1.5.0.min.js") %>'},
  {load:'<%= asset_path("hero_edge.js") %>'},
  {load:'<%= asset_path("hero_edgeActions.js") %>'}
];

您也可以在application.js中删除您的要求中的所有Adobe Edge JS文件。

您必须将asset_path添加到hero_edge.js中的任何图片,并将其更改为hero_edge.js.erb

如果有更简单的方法,我很乐意知道:)

答案 1 :(得分:1)

迈克尔约翰斯顿改变Edge的aLoader路径的解决方案可行,但会出错。在localhost上,我会随机获得Uncaught HierarchyRequestError: A Node was inserted somewhere it doesn't belong.,而在每次页面刷新后部署到Heroku之后。

此外,我的应用程序依赖于更高版本的jQuery - 因此添加Edge动画中的一个可能会导致冲突。

经过反复试验,我决定使用这个解决方案:

  1. 将整个动画放入/public/edge文件夹
  2. 将动画放入iframe:<iframe class="animation-container" src='/edge/animation.html' />
  3. 不是最优雅的,但肯定会省去很多麻烦。