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