2012-11-08 11 views
11

मैं इस पर अपने दिमाग को तोड़ रहा हूं लेकिन इसे प्राप्त नहीं कर सकता। मुझे लगता है कि इस सवाल का जवाब शायद स्पष्टरेल के लिए रैनसैक पर डिफ़ॉल्ट खोज पैरामीटर सेट करना

है मुझे क्या करना कोशिश कर रहा हूँ निम्नलिखित है:

मैं एक सूचकांक नियंत्रक जो जो मैं लूटना उपयोग करके खोज सकते नौकरियां की एक श्रृंखला को सूचीबद्ध करता है। प्रत्येक नौकरी की समाप्ति तिथि होती है जिसमें या तो इसमें कोई तारीख होती है या शून्य (अधूरा) होती है। वर्तमान में खोज स्वयं महान काम करती है। मैं इसे बनाना चाहता हूं ताकि इंडेक्स पेज केवल अधूरा काम दिखा रहा हो, लेकिन मैं यह भी काम करना चाहता हूं ताकि जब कोई खोज चलाए, तो समाप्त और अधूरा काम दोनों के लिए परिणाम लौटाएंगे।

किसी भी मदद की सराहना की जाएगी। नीचे दिए गए कोड में: पूर्णता तिथि के साथ फ़ील्ड का नाम वास्तविक है। मैं भी वेब के चारों ओर देख रहा था और सोचा था कि शायद DEFAULT_SEARCH_PARAMETER = {} जैसा कि मेरे पास नौकरी मॉडल में कुछ काम हो सकता है लेकिन मैं इसे प्राप्त नहीं कर सका।

class Job < ActiveRecord::Base 
    DEFAULT_SEARCH_PARAMETER ={} 
    attr_accessible :items_attributes, :actual 
end 

def index 
    @search = Job.search(params[:q] || Job::DEFAULT_SEARCH_PARAMETER) 
    @search.build_condition 
    @results = @search.result 
    @job = @results.paginate(:per_page => 10, :page => params[:page]) 
end 

उत्तर

18

मुझे लगता है कि जब खोज मापदंडों मौजूद नहीं है तो आप सिर्फ अपने खुद के फिल्टर लागू हो सकते हैं:

def index 
    @search = Job.search(params[:q]) 
    @results = @search.result 
    @results = @results.where(:your_date => nil) unless params[:q] 
    @job = @results.paginate(:per_page => 10, :page => params[:page]) 
end 
+2

धन्यवाद! यह काम किया। मैं इसे वोट दूंगा लेकिन मेरे पास प्रतिष्ठा नहीं है। –

+0

इस का पालन करने से पहले ricsrock के बेहतर उत्तर की जांच करें। –

0

तो डिफ़ॉल्ट रूप से, आप पृष्ठ को रिकॉर्ड के साथ लोड करना चाहते हैं जहां वास्तविक शून्य है। और बाद में जब उपयोगकर्ता खोज करता है कि आप वापस जाना चाहते हैं कि आपकी खोज पहले कैसे काम कर रही थी।

इसे आज़माएं।

def index 
    @search = Job.search(params[:q] || Job::DEFAULT_SEARCH_PARAMETER) 
    @search.build_condition 
    @results = @search.result 
    if @results.nil? 
     @results=Job.find(:all, :conditions => ["actual = NULL"]) 
    end 

    @job = @results.paginate(:per_page => 10, :page => params[:page]) 
end  
+0

मैंने यह कोशिश की लेकिन यह काम नहीं किया। फ़िर भी सहायता के लिए धन्यवाद! –

27

देर पार्टी के लिए है, लेकिन मैं किसी और मामले में किसी को एक वैकल्पिक दृष्टिकोण सुझाव देंगे सोचा इस पर आता है।

उपर्युक्त उत्तर काम करता है, लेकिन इसका नुकसान यह है कि डिफ़ॉल्ट को रैनसैक की खोज वस्तु में जोड़ा नहीं जाता है, इसलिए - यदि आप एक खोज फ़ॉर्म का उपयोग कर रहे हैं - डिफ़ॉल्ट चयन फ़ॉर्म में नहीं दिखाया गया है।

निम्न दृष्टिकोण खोज ऑब्जेक्ट में डिफ़ॉल्ट जोड़ता है और इसलिए आपके खोज फ़ॉर्म में दिखाई देगा।

def index 
    @search = Job.search(params[:q]) 
    @search.status_cont = 'Open' unless params[:q] #or whatever, must use Ransack's predicates here 
    @results = @search.result 
    @job = @results.paginate(:per_page => 10, :page => params[:page]) 
end 
+0

यह स्वीकार्य उत्तर होना चाहिए। – johnrees

+0

अरे @ श्वेतसूची वाले स्कोप के साथ ऐसा करने के बारे में कोई विचार है? – bnussey

+0

अच्छा जवाब @ricsrock। चूंकि रैनसैक खोज को संशोधित करता है, इसलिए आपके द्वारा जोड़ा गया डिफ़ॉल्ट होना आसान है जो प्रस्तुत पृष्ठ के खोज अनुभाग पर सही ढंग से दिखाया गया है। –

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