2011-08-18 137 views
0
$(document).ready -> 
    $('#auto').autocomplete(source: "main/search") 

超出了設置自動完成env的代碼,'#auto'是一個輸入字段。JqueryUI在Rails3中的自動完成

在我的主控制器我得到的搜索行動

def search 
    @user = User.find_by_name 'castiel' 
    respond_to do |format| 
    format.json { render :json => @user.to_json(:only => :name) } 
    end 
end 

一切似乎完全fine.When工作,我在char類型,比方說,一個「C」,所以Ajax請求被髮送和接收的JSON數據。

在Firebug,它顯示了Ajax請求順利拿到低於

{"name":"castiel"} 

JSON數據到目前爲止好,但JSON數據的類型不是那種自動完成demanded.It要求是JSON數據是像下面。

{"id":"castiel", "label":"castiel", "value":"castiel"} 

所以這裏是問題,如何將josn數據修改爲我想要的那種。

+0

你能告訴我們您的ERB文件?如果我記得很清楚,有一個稱爲自動完成的div,當自動完成獲取響應時會出現。你必須寫一個小的erb.html來處理你的控制器的響應。我一年前做了同樣的事情......但我現在無法訪問我的代碼... – Cygnusx1

+0

感謝您的信息,我剛剛更新了我的question.new問題剛剛出來。 – castiel

回答

0

在成功的功能,你需要返回類似

.autocomplete({ 
    source: function(request, response){ 
     $.ajax({ 
      url: "main/search", 
      dataType: "json", 
      data: { 
       style: "full", 
       maxRows: 12, 
       term: request.term 
      },success: function(data) { 
        response($.map(data, function(user) { 
         return { 
          label: user.name, 
          value: user.id 
         } 
        })); 
0

Rails允許你以服務JSON在從控制器的任何結構。當使用jQuery自動完成幫手,在您使用自動完成庫方法json_for_autocomplete如下所需要的格式成爲JSON回:

# app/controllers/example_controller.rb 

def autocomplete_example 
    items = Example.where(...) 
    respond_to do |format| 
    format.json do 
     render :json => json_for_autocomplete(items, 'name', []) 
    end 
    end 
end 

的第一個參數是json_for_autocomplete你的對象返回的集合。第二種方法是調用這些對象來定義JSON散列中的值。最後一個參數爲任何額外的選項,它可以在這裏找到:

https://github.com/crowdint/rails3-jquery-autocomplete/blob/master/lib/rails3-jquery-autocomplete/autocomplete.rb