2012-06-04 111 views
3

我已經實現了一個搜索框,可以在我的數據庫中搜索「疾病」表和「症狀」表。 現在我想添加自動完成到搜索框。ruby​​ on rails用自動完成的搜索執行搜索

我創建了一個名爲「auto_complete_controller」的新控制器,它返回自動完成的數據。 我只是不知道如何結合搜索功能和自動完成功能:我希望我的搜索控制器中的「索引」操作返回搜索結果,並且我的auto_complete控制器中的「索引」操作返回auto_complete數據。

請指導我如何解決我的html語法以及在js.coffee文件中寫什麼。 我使用的軌道3.X與自動完成的jQuery UI的,我更喜歡一個服務器端解決方案,這是我當前的代碼:

main_page/index.html.erb:

<p> 
    <b>Syptoms/Illnesses</b> 
    <%= form_tag search_path, :method => 'get' do %> 
     <p> 
     <%= text_field_tag :search, params[:search] %> <br/> 

     <%= submit_tag "Search", :name => nil %> 
     </p> 
    <% end %> 
</p> 

auto_complete_controller.rb:

class AutoCompleteController < ApplicationController 

    def index 
    @results = Illness.order(:name).where("name like ?", "%#{params[:term]}%") + Symptom.order(:name).where("name like ?", "%#{params[:term]}%") 

    render json: @results.map(&:name) 
    end 
end 

search_controller.rb:

class SearchController < ApplicationController 

def index 
    @results = Illness.search(params[:search]) + Symptom.search(params[:search]) 

    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @results } 
    end 
end 
end 

Ť李012

回答

0

以下是如何在Twitter-Bootstrap中執行動態預先輸入;我敢肯定,這是類似的jQuery:

https://gist.github.com/1848558

本質上說,通過聽非導航按鍵,它觸發一個AJAX部分文本搜索到您的控制器。這個返回數據然後填充JS框架的typeahead/autocomplete數據來顯示。這意味着你真的只需要一個SearchController。

0

嘗試rails3-jquery-autocomplete。我正在使用它,並且與您具有相同的要求,並且它們一起正常工作。讓我知道你是否需要進一步的幫助。