2010-07-04 14 views
9

हर द्वारा संदर्भित मैं एक चेतावनी मिलती है:Rails3: चेतावनी: उच्चस्तरीय निरंतर ApplicationController

app/controllers/agency/agencies_controller.rb:1: warning: toplevel constant ApplicationController referenced by Agency::ApplicationController 

मेरे agencies_controller.rb:

class Agency::AgenciesController < Agency::ApplicationController 

    def index 
    ... 
    end 

    ... 
end 

और एजेंसी :: ApplicationController:

class Agency::ApplicationController < ApplicationController 
    layout 'agency' 

    helper_method :current_agency 
    private 

    def current_agency 
    @current_agency ||= current_user.agency 
    end 

end 

रेल मुझसे क्या चाहता है? मुसीबत क्या है?

अन्य नियंत्रक

class Agency::ClientsController < Agency::ApplicationController 
    ... 
end 

और कोई चेतावनी, कोई त्रुटि के साथ भी यही स्थिति ...

उत्तर

5

ApplicationController सुपर क्लास नियंत्रक जब आप सभी कि एक नया प्रोजेक्ट बना है कि रेल द्वारा आपके लिए बनाए का नाम है आपके अन्य नियंत्रक वर्गों से प्राप्त होता है। शायद कहीं एक संघर्ष है क्योंकि आपने उसी नाम का उपयोग किया है, भले ही आप इसे नामस्थान में डाल दें।

अपने Agency::ApplicationController एक अलग नाम दे रही है कोशिश।

+0

लेकिन एजेंसी :: ClientsController के साथ कोई मुसीबतों देखते हैं ?? – petRUShka

+1

क्योंकि 'क्लाइंट नियंत्रक' के पास रेल के लिए विशेष अर्थ नहीं है। –

+0

मेरे पास एक कार्यशील व्यवस्थापक है :: एप्लिकेशन नियंत्रक जो समस्या नहीं देता है। तो नामकरण की आवश्यकता नहीं है। शायद कॉल स्टैक में कहीं और अस्पष्टता है, जो रूबी शिकायत कर रही है। –

2

मैं Spork और Watchr सेट करने के बाद इसी तरह के मुद्दों था। इस प्रक्रिया में, मैंने कक्षा कैशिंग (config_cache_classes => falseconfig/environments/test.rb में बंद कर दिया) ताकि परिवर्तनों को स्पार्क पर्यावरण में आवश्यक रूप से पुनः लोड किया जा सके। क्लास कैशिंग back on को चालू करने से चेतावनियां दूर हो गईं।

7

मेरे Admin नामित नियंत्रकों में Spork और Watchr चल रहे समान समस्याएं थीं। तो मैं इस निम्नलिखित कोड जोड़कर each_run ब्लॉक में spec_helper.rb में ठीक करने के बाद: हो जाता है guy from this thread

+1

धन्यवाद, इसने इस मुद्दे को हल किया है। –

+1

धन्यवाद यह बहुत अच्छा काम करता है, मैंने इसे थोड़ा सा संशोधित करने के लिए संशोधित किया: Dir [Rails.root.join ("ऐप/नियंत्रक/व्यवस्थापक/* आरबी")]। प्रत्येक {| एफ | मेरे सिर को टक्कर देने के घंटों के बाद f} –

+0

की आवश्यकता है .. इसने मेरे मुद्दे को हल किया .. अच्छा है कि मैंने देखा कि चेतावनी और अच्छा है कि मुझे यह जवाब मिला .. बहुत बहुत धन्यवाद। – whizcreed

12

को

Dir[File.expand_path("app/controllers/admin/*.rb")].each do |file| 
    require file 
end 

सभी क्रेडिट मुझे पता है इस सवाल का लगभग दो साल पुराना है, लेकिन मैं हाल ही में another stackoverflow के माध्यम से इस पर ठोकर खाई पोस्ट और कुछ अंतर्दृष्टि साझा करना चाहता था।

असल में, यदि आपका नामस्थान Agency के बजाय class होता है, तो आपको वह चेतावनी मिल जाएगी। स्टैक ओवरफ्लो पोस्ट में मैंने ऊपर चिपकाया था, उनके पास Admin का मॉडल (class) था और उनका नामस्थान भी Admin था।

This क्या हो रहा है की एक बेहतर विवरण उपलब्ध कराती है।

इसलिए यदि आपके कोड कहीं एक Agency वर्ग को परिभाषित नहीं कर रहा है देखने के लिए जाँच। सौभाग्य।

2

मेरे मामले में यह वसीयत के साथ समस्या थी। मेरे पास एक डिवीजन मॉडल एडमिन और नामस्थान मार्ग एडमिन था। प्रशासन के नामित मार्ग को बदलने से समस्या हल हो गई। मेरे लिए

0

समाधान इस लाइन को जोड़ने था:

# spec/rails_helper.rb 
Dir[File.expand_path("app/controllers/admin/*.rb")].each { |file| require file } 
संबंधित मुद्दे