2013-03-03 16 views
5

के साथ खोज के रेल कार्यान्वयन मुझे यकीन नहीं है कि मेरे खोज फ़ंक्शन में स्वत: पूर्ण रूप कैसे है।स्वत: पूर्ण

<%= form_tag "/search", :method => "get" do %> 
    <%= text_field_tag :query, params[:query] %> 
    <%= image_submit_tag "site/blankimg.png", :name => nil %> 
<% end %> 

मैं जो एक स्वनिर्धारित कार्रवाई है निम्न में से एक नियंत्रक है

def query 
    @users= Search.user(params[:query]) 
    @article= Search.article(params[:query]) 
    end 

मॉडल है है का पालन करें:

def self.user(search) 
if search 
    User.find(:all, :conditions => ['first_name LIKE ?', "%#{search}%"]) 
    else 
    User.find(:all) 
    end 
end 

def self.article(search) 
    if search 
    Article.find(:all, :conditions => ['title LIKE ?', "%#{search}%"]) 
    else 
    Article.find(:all) 
    end 
end 

अब इस काम के लिए एक खोज के लिए महान है, लेकिन यह, मैं मुझे यह परिणाम दिखाना पसंद है कि मैं इसे लिख रहा हूं, और मैं jquery स्वतः पूर्ण नहीं कर सकता क्योंकि यह दो वस्तु है।

उत्तर

21

ट्विटर टाइपहेड का उपयोग करें। वहाँ कुछ उदाहरण यहां हैं:

http://twitter.github.com/typeahead.js/examples/

ट्विटर Typeahead और सभी जानकारी की आवश्यकता https://github.com/twitter/typeahead.js/

से उपलब्ध है

उपयोग डेटा आप करने जा रहे हैं पर निर्भर करता है का उपयोग कैसे करें 'सुझाव' के रूप में है। उदाहरण के लिए, अगर यह स्थिर डेटा है कि आप इसे इस तरह से लागू कर सकते हैं (हमेशा एक ही होने जा रहा):

$('input.typeahead').typeahead({ 
    local: ['suggestion1', 'suggestion2', 'suggestion3',...., 'suggestionN'] 
    #The typeahead is going to load suggestions from data in local. 
}); 

तो डेटा परिवर्तन और यह एक मॉडल या एक डाटाबेस तालिका से आया है तो आप की कोशिश कर सकते हैं:

Controller: 
def load_suggestions 
    @suggestions = MyModel.select(:name) or MyModel.find(:all, conditions: [...]) #Select the data you want to load on the typeahead. 
    render json: @suggestions 
end 

JS file: 
$('input.typeahead').typeahead([ 
    { 
    prefetch: 'https://www.mipage.com/suggestion.json' #route to the method 'load_suggestions' 
    #This way, typeahead will prefecth the data from the remote url 
    } 
]); 
+0

मैं अपने मॉडल को कैसे हुकूंगा? – Jseb

+2

मैं आपको यह दिखाने के लिए अपना जवाब संपादित करने जा रहा हूं कि यह कैसे काम करता है – Alfonso

+0

धन्यवाद, मैं पढ़ रहा हूं कि उनकी एपीआई पहली बार देखा गया है – Jseb

संबंधित मुद्दे