0

我想在Rails 3.2.0中設置jQuery自動完成。如果我在javascript中設置一個數組作爲數據源,我可以正常工作。我的問題是,在頁面加載期間,搜索條件最終會變得太多以至於無法加載。我正在嘗試設置遠程數據源,但無法填充頁面上的內容。jQuery自動完成倍數w /遠程數據通過Rails

正在返回數據,但選擇不填充。絕大多數代碼都是直接從jQuery UI演示網站獲得的。

我錯過了什麼?

$("#tags") 
    // don't navigate away from the field on tab when selecting an item 
    .bind("keydown", function(event) { 
     if (event.keyCode === $.ui.keyCode.TAB && 
      $(this).data("autocomplete").menu.active) { 
       event.preventDefault(); 
      } 
    }) 
    .autocomplete({ 
     source: function(request, response) { 
      $.getJSON("get/tags", { 
       term: extractLast(request.term) 
      }, response.name); 

      }, 
      search: function() { 
       // custom minLength 
       var term = extractLast(this.value); 
       if (term.length < 2) { 
        return false; 
       } 
      }, 
      focus: function() { 
       // prevent value inserted on focus 
       return false; 
      }, 
      select: function(event, ui) { 
       var terms = split(this.value); 
       // remove the current input 
       terms.pop(); 
       // add the selected item 
       terms.push(ui.item.value); 
       // add placeholder to get the comma-and-space at the end 
       terms.push(""); 
       this.value = terms.join(", "); 
       return false; 
      } 
     }); 
+0

'extractLast'函數在哪裏? – 2012-04-03 18:58:30

+0

另外,你有沒有看過AJAX請求正在做什麼?響應在您的開發人員工具中看起來如何? – 2012-04-03 19:05:32

回答

1

我發現我的問題。傻我。閱讀自動完成插件上的所有文檔都很有幫助。我的問題是我沒有提供適當的「被稱爲」JSON數組。

jQuery UI

與標籤和值的屬性的對象Array引用: [{標號: 「選擇1」,值: 「VALUE1」},...]

所以創建JSON呈現在你的Rails應用程序是這樣的:

def get_tags 
    @tags = Tag.where(['name LIKE ?', "#{params[:term]}%"]) 
    @tags_hash = [] 

    @tags.each do |tag| 
     @tags_hash << { label: tag.name } 
    end 

    render json: @tags_hash 
end 
在我的代碼上面的$ .getJSON

還要這樣來定義