2010-11-18 17 views
6

मैं यह नहीं समझ सकता कि यह रेल 3.0 में कैसे करें। मैं एक नियंत्रक, products, और एक कार्य, search है, और routes.rb में मैंगैर-सुरक्षित मार्गों को कॉन्फ़िगर करना

resources :products, :collection => {:search => :post } 

और

match 'products/search' => 'products#search', :via => [:get, :post] 

और कई अन्य सेटिंग्स की कोशिश की है, लेकिन जब भी मैं products/search का उपयोग मैं अभी भी कोई त्रुटि मिलती है शिकायत है कि आईडी के साथ उत्पाद, search, कार्रवाई show के लिए नहीं मिल सकता है। किसी को पता है कि मैं क्या गलत कर रहा हूँ?

धन्यवाद।

resources :products do 
    collection do 
    get :search 
    post :search 
    end 
end 

यह या तो आप एक GET या POST अनुरोध का उपयोग ProductsController#search कार्रवाई का उपयोग करने की अनुमति देगा:

उत्तर

10

आप करीब हैं।

resources :products do 
    collection do 
    match 'search', :via => [:get, :post] 
    end 
end 

वैकल्पिक रूप से, आप भी कर सकता है:

resources :products do 
    match 'search', :on => :collection, :via => [:get, :post] 
end 

एज गाइड्स की Rails Routing from the Outside In अधिक जानकारी, और अधिक विशेष के लिए:

+1

वाह, मुझे नहीं पता कि मैं "बाहर से रूटिंग" पृष्ठ के उस अनुभाग को कैसे चूक गया। बहुत बढ़िया। धन्यवाद, दोस्तों, जो काम किया। – user508546

+0

कोई जांच नहीं। खुशी है कि हम मदद कर सकते हैं। =) यह बहुत बुरा है कि आप दोनों को उत्तर के रूप में चिह्नित नहीं कर सकते हैं। = D – John

4

रेल 3 में, collection अब एक ब्लॉक है।

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