विचारों को देखने के लिए उपयोग किए जाने वाले हल करने वाले पैटर्न में केवल ActionView::LookupContext
कक्षा के साथ पंजीकृत चर शामिल हो सकते हैं। इसलिए पहला कदम LookupContext
कक्षा के साथ एक नया चर (subdomain
) पंजीकृत करना है। आप एक प्रारंभकर्ता में करना चाहिए:
ActionView::LookupContext.register_detail(:subdomain) do
['default_subdomain']
end
अब LookupContext
subdomain
बारे में जानता है, उसे ठीक करने के पैटर्न में शामिल किया जा सकता। हल करने पैटर्न बदलने के बारे में और अधिक विस्तार के लिए, यह भी एक प्रारंभकर्ता में ActionView::FileSystemResolver
documentation देखते हैं, लेकिन अनिवार्य रूप से आप निम्नलिखित को शामिल करना चाहिए,:
ActionController::Base.view_paths = ActionView::FileSystemResolver.new(
Rails.root.join('app', 'views'),
':prefix/:action{.:locale,}{.:subdomain,}{.:formats,}{.:handlers,}'
)
यह पैटर्न अंततः Dir.glob
को पारित कर दिया है (के बाद :*
चर प्रतिस्थापित किया गया है)। ग्लोब पैटर्न {.:subdomain,}
का अर्थ है "या तो .:subdomain
या कुछ भी नहीं", जो उपडोमेन वाली फ़ाइल नहीं है, तो कोई सबडोमेन वाला दृश्य फ़ाइल में फ़ॉलबैक प्रदान करता है।
अंतिम चरण ApplicationController
अद्यतन करने के लिए LookupContext
को उपडोमेन पारित करने के लिए है:।
class ApplicationController < ActionController::Base
def details_for_lookup
{:subdomain => [request.subdomain]}
end
end
(इस उत्तर ज्यादातर स्रोत कोड को पढ़ कर पता लगा था, इन सुविधाओं में से कुछ दस्तावेज नहीं कर रहे हैं यह था रेल 3.2.5 के साथ परीक्षण किया गया)
धन्यवाद! वह _exacly_ था जो मुझे चाहिए था। – user1105595
खुशी है कि मैं मदद कर सकता हूं, और स्टैक ओवरफ़्लो में आपका स्वागत है। यदि कोई उत्तर आपकी समस्या हल करता है, तो आपको इसे स्वीकार करने के रूप में चिह्नित करना चाहिए, यहां और क्यों यहां पर अधिक जानकारी: http://meta.stackexchange.com/a/5235 – georgebrock