2015-10-12 8 views
5

मेरे पास Organization नामक एक मॉडल है। यह app/models/organization.rbरेल नाम त्रुटि अनियमित स्थिर (मॉडल और नेमस्पेस टक्कर)

class Organization < ActiveRecord::Base 
... code 
end 

में परिभाषित किया गया है मैं Admin::Organization::ActivitiesController नाम के एक नियंत्रक है। इसे app/controllers/admin/organization/activities_controller.rb में परिभाषित किया गया है। इसमें एक सूचकांक कार्रवाई है।

NameError in Admin::Organization::ActivitiesController#index 
uninitialized constant Admin::Organization::ActivitiesController::Organization 

किसी कारण यह नियंत्रक वर्ग के भीतर संगठन मॉडल देखते हुए है के लिए:

class Admin::Organization::ActivitiesController < ApplicationController 
    def index 
    @organization = Organization.new 
    ... more code 
    end 
end 

मैं जब मैं ऊपर सूचकांक कार्रवाई अमल निम्न संदेश मिलता है। अगर मैं विधि

@organization = ::Organization.new 

का उपयोग करने के लिए विधि को बदलता है तो यह ठीक काम करता है।

यह व्यवहार प्रिये कंसोल में प्रतीत नहीं होता है। अगर मैं इंडेक्स विधि में binding.pry कॉल जोड़ता हूं, तो मैं कमांड लाइन से Organization.new या ::Organization.new पर कॉल कर सकता हूं।

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

मुझे लगता है कि यह रूट.आरबी फ़ाइल में नामस्थान के साथ कुछ कर सकता है। एक नामस्थान है जो organization शब्द का उपयोग करता है।

namespace :admin do 
    namespace :organization 
    resources :activities 
    end 
end 

एक परीक्षण के रूप में, मैं :organizations के नाम स्थान बदल गया है, और मैं चीजों को :: की जरूरत के बिना काम करने के लिए प्राप्त करने में सक्षम था। क्या चीजों को व्यवस्थित करने का कोई तरीका है, या रूटिंग सेटिंग है, इसलिए हमारे पास :organization का नामस्थान हो सकता है जो Organization नामक मॉडल में हस्तक्षेप नहीं करता है?

+0

बस स्पष्ट करने के लिए, जब आप कहते हैं कि "कोड टूट जाता है", इस तरह मार्गों का उत्पादन करेगा, क्या आपका मतलब है आपको लगता है कि क्यों दिखाई देता है जब आप ऐप को आजमाते हैं और शुरू करते हैं तो त्रुटि या जब आप 'क्रियाएँ नियंत्रक # अनुक्रमणिका' विधि को कॉल करते हैं तो त्रुटि? – seddy

+0

जब 'क्रियाएँ नियंत्रक # अनुक्रमणिका' क्रिया निष्पादित की जाती है तो यह टूट जाती है। मैंने सवाल अपडेट किया। – CodeSmith

उत्तर

1

यदि आप बस सही रास्ता बनाना चाहते हैं, तो आपको admin/organization नामस्थान फ़ोल्डर के तहत गतिविधियों नियंत्रक को रखने की आवश्यकता नहीं है। एक और विकल्प नामस्थान के बजाय दायरे का उपयोग करना होगा।

# app/controllers/activities_controller.rb 
class ActivitiesController < ApplicationController 
    def index 
    @organization = Organization.new 
    ... more code 
    end 
end 

अब मार्गों कॉन्फ़िगर,

# config/routes.rb 
scope 'admin/organization', path: 'admin/organization' do 
    resources :activities 
end 

यह

Prefix Verb URI Pattern          Controller#Action 

activities GET /admin/organization/activities(.:format)  activities#index 
       POST /admin/organization/activities(.:format)  activities#create 
...... 
संबंधित मुद्दे