2012-06-04 80 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。我正在使用它,并且与您具有相同的要求,并且它们一起正常工作。让我知道你是否需要进一步的帮助。