ReferenceError:未定义

时间:2013-11-20 20:52:11

标签: javascript jquery ruby-on-rails heroku

在Heroku上部署项目后,我在Firebug中获取以下代码:

ReferenceError:未定义SirTrevor

<script type="text/javascript" charset="utf-8">
$(function(){
  var instances = $('.sir-trevor-area'),
  l = instances.length;
while (l>=2) {
 instance = $(instances[l]);
 new SirTrevor.Editor({ el: instance, blockTypes: ["Video"], defaultType: "Video" });
 l--;
};
while (l>=1) {
 instance = $(instances[l]);
 new SirTrevor.Editor({ el: instance, blockTypes: ["Embedlylink"], defaultType: "Embedlylink" });
 l--;
};
while (l>=0) {
 instance = $(instances[l]);
 new SirTrevor.Editor({ el: instance, blockTypes: ["Heading", "Text", "Image", "Video", "Embedly"], defaultType: "Text" });
 l--;
};
});
</script> 

Firebug强调了这一行“

new SirTrevor.Editor({ el: instance, blockTypes: ["Heading", "Text", "Image", "Video", "Embedly"], defaultType: "Text" });

在localhost上一切似乎都很好,没有错误。 谁知道问题可能是什么? 非常感谢你的帮助!真的很感激!

更新:

SirTrevor在sir-trevor.js中定义,它通过application.js文件中的Rails资产管道成功加载。

这是我的application.js文件:

//= require jquery
//= require jquery_ujs
//= require sir-trevor
//= require underscore.js
//= require eventable.js
//= require twitter/bootstrap
//= require jquery.sidr.js
//= require_tree .

在推送到Heroku之前,我做“rake assets:precompile”。在localhost上一切都很好。

application.html.erb标题:

<!DOCTYPE html>
<html>
<head>
  <title>Tt</title>
  <%= stylesheet_link_tag    "application", :media => "all" %>
  <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.0/css/font-awesome.css" rel="stylesheet">
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>

</head>

1 个答案:

答案 0 :(得分:2)

为了结束这个简短的综述: 感谢@iamjpg的帮助,我终于明白了。

首先,我从<body>中删除了所有javascript并将其放入单独的js文件中。 然后我调整了application.js文件中的层次结构。 Sir-Trevor依赖于underscore.js和eventable.js,所以他们必须高于sir-trevor.js。

//= require jquery
//= require underscore.js
//= require eventable.js
//= require twitter/bootstrap
//= require jquery_ujs
//= require sir-trevor
//= require jquery.sidr.js
//= require_tree .