2012-10-11 19 views
9

मेरे पास BaseController नामक एक नियंत्रक है जो ApplicationController से प्राप्त मॉडल को व्हाइटआउट से प्राप्त करता है लेकिन इसमें ping विधि है जो यह सूचित करने के लिए एक संदेश के साथ प्रतिक्रिया देती है कि सबकुछ ठीक है।रेल में मॉडल के बिना नियंत्रक के लिए रूट 3

मैं अपने routes.rb फ़ाइल में BaseController के माध्यम से कार्रवाई पिंग इस सेटिंग कॉल करने के लिए कोशिश कर रहा हूँ:

namespace :api, defaults: { format: 'json' } do 
    match '/ping' => 'base#ping' 
end 

लेकिन यह हमेशा मुझे एक NameError uninitialized constant Base दे। मुझे लगता है कि यह बेस नामक मॉडल ढूंढने की कोशिश कर रहा है जो अस्तित्व में नहीं है, इसलिए मुझे नहीं पता कि मेरे नियंत्रक के सही मार्ग पर कैसे सेट किया जाए।

class Api::BaseController < ApplicationController 
    load_and_authorize_resource 
    respond_to :json 

    def ping 
     respond_with({ :status => 'OK' }) 
    end 
end 

के रूप में अतिरिक्त जानकारी:

मेरी BaseController की सामग्री निम्नलिखित है BaseController अन्य नियंत्रकों वारिस के लिए सिर्फ एक माता पिता के नियंत्रक है। अन्य संसाधन नियंत्रक हैं और

धन्यवाद मॉडल हैं।

उत्तर

8

जब आप किसी रूट के आस-पास नामस्थान डालते हैं, तो वह उस नामस्थान के भीतर नियंत्रक की तलाश करेगा।

तो आपके मामले में, यह एपी :: बेसकंट्रोलर नामक नियंत्रक की तलाश करेगा, जो आमतौर पर ऐप/नियंत्रकों/एपीआई/बेस_कंट्रोलर.आरबी में संग्रहीत किया जाएगा। क्या यह आपका नियंत्रक स्थापित है?

अधिक जानकारी के लिए यहाँ देखें: http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing

संपादित करें:

मुझे नहीं अपने नियंत्रक यही समस्या है खोजने नहीं लगता। त्रुटि उत्पन्न हो रही है क्योंकि आप नियंत्रक में load_and_authorize_resource पर कॉल कर रहे हैं। संसाधन लोड करने का प्रयास करने के लिए CanCan नियंत्रक नाम का उपयोग करता है।

यदि नियंत्रक के लिए कोई मॉडल नहीं है, तो authorize_resource :class => false पर कॉल करें।

अधिक जानकारी के लिए bottom of this page देखें।

+0

हाँ, यह मेरी संरचना है। – John

+0

क्या आप प्रश्न में अपने 'बेसकंट्रोलर' की सामग्री जोड़ सकते हैं? आपकी रुचि के लिए – link664

+0

धन्यवाद। बेसकंट्रोलर सामग्री जोड़ा गया। – John

0

इस प्रयास करें:

अपने routes.rb में इस जोड़े

resources :base 
+0

उत्तर के रूप में इसे चुनने के लिए स्वतंत्र महसूस करें धन्यवाद लेकिन अभी भी नेमइरर है, लेकिन मेरे पास आधार मॉडल नहीं है, केवल एक एपीआई के लिए एक विशिष्ट नियंत्रक है। बेसकंट्रोलर से प्राप्त नियंत्रक ठीक काम करते हैं लेकिन उनके पास मॉडल जुड़े हैं। मेरा मतलब है, पिंग मार्ग को एक संसाधन मार्ग नहीं होना चाहिए। – John

0

अपने routes.rb map.resources में इस प्रयास करें: आधार,: संग्रह => {: पिंग =>: प्राप्त करें}