rails3-jquery-autocomplete:Javascript TypeError

时间:2013-01-21 18:43:14

标签: javascript ruby-on-rails-3 jquery-autocomplete

Rails 3.2.11

我按照了这个宝石的说明:https://github.com/crowdint/rails3-jquery-autocomplete。当我加载我想要拥有自动完成字段的页面时,Jquery,jquery-ui,autocomplete-rails.js等都被加载。但是,在加载页面时,我在错误控制台中得到了这个:

  

TypeError:'undefined'不是函数(评估'this.live')

我解压缩了js文件,这是被引用的函数:

(function(jQuery)
{
  var self = null;
  jQuery.fn.railsAutocomplete = function() {
    return this.live('focus',function() {
      if (!this.railsAutoCompleter) {
        this.railsAutoCompleter = new jQuery.railsAutocomplete(this);
      }
    });
  };

任何人都知道发生了什么事吗?由于我没有在任何地方使用'$',noConflict选项似乎并不重要,无论哪种方式都无法解决问题。我没有对autocomplete-rails.js进行任何更改

奇怪的是,我发誓这在某种程度上正在发挥作用,但我不能为我的生活弄清楚改变了什么来打破它。

2 个答案:

答案 0 :(得分:0)

是的,事实证明我有一个错误的javascript_include_tag,它加载了另一个jquery副本。这就是问题

答案 1 :(得分:0)

我相信原始海报自己的答案也是我的解决方案的一部分。使用rails 3.2.13,jquery 1.9.0和jquery-ui 1.9.2。更完整我也:

  • 将rails3-jquery-autocomplete升级到最新版本(从1.0.9升级到1.0.11,当我看到:“如果可能的话,在{{3}的更改日志中使用jQuery .on()而不是.live()” }
  • 删除了可能多余或冲突的jquery包含
  • 重新排序包括,特别是在autocomplete-rails
  • 之后放置underscore.js
  • 完全停止并清除缓存和已编译的资产

在前3个步骤之后,仍然存在损坏的行为(在每个步骤之后我仅重新启动服务器)。最后一步是出于懒惰,但幸好表明上述组合起作用。