使用JQuery插件会出现“未定义”错误

时间:2013-05-02 02:37:51

标签: jquery ruby-on-rails asset-pipeline jquery-cookie

在Localhost上使用Chrome on Rails。这是该页面的修剪版本:

<!DOCTYPE html>
<head>
  <link href='http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css' rel='stylesheet'>
  <script src='https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js' type='text/javascript'></script>
  <script src='http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/js/bootstrap.js' type='text/javascript'></script>
  <script src='http://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.3.1/jquery.cookie.min.js' type='text/javascript'></script>
  <meta content="authenticity_token" name="csrf-param" />
  <meta content="blahblah=" name="csrf-token" />
  <link href="/assets/application.css?body=1" media="all" rel="stylesheet" type="text/css" />
  <script src="/assets/application.js?body=1" type="text/javascript"></script>
  <meta name="viewport" content="width=device-width, initial-scale=1.0 maximum-scale=1.0">
</head>
<body data-action='index' data-controller='application'>
</body>

在Chrome控制台(以及更远的脚本中)中,$.cookie未定义且$.cookie("a", "b")引发错误。

我已尝试过其他一些CDN,但同样的问题。

编辑: 我在Chrome Javascript控制台中试图解决问题,我猜想这是在页面加载后运行的。我可以检查一下&#34;资源&#34;选项卡,看到插件已加载没有问题。如果我重新排列以在Jquery之前链接插件,我会得到预期的错误。

1 个答案:

答案 0 :(得分:1)

我通过“资源”标签检查了我的应用程序提供的javascript文件,发现我的application.js仍然有JQuery,所以,大概是,当文件加载时,它正在重新定义没有Coookie的JQuery

之所以发生这种情况是因为我从使用gems加载JQuery到使用外部CDN,但重新编译(或删除)我的资产。

通过从public/assets

中删除已编译的资产来解决此问题