मेरे आवेदन में, मेरे पास "उपयोगकर्ता" मॉडल है।एक नियंत्रक, सामान्य उपयोगकर्ताओं के लिए अलग-अलग विचार और व्यवस्थापक
Class User < ActiveRecord::Base
has_many :addresses
def is_authorized(op)
# returns true or false
end
def is_owned_by(user)
# returns true or false
end
end
Class Address < ActiveRecord::Base
belongs_to :user
end
AddressController वर्ग के अंदर, वर्तमान में उपयोगकर्ता के प्रवेश "@user" उदाहरण चर में उपलब्ध है: प्रत्येक उपयोगकर्ता एकाधिक (ईमेल) पतों जो मॉडल "पता" में परिभाषित कर रहे हैं हो सकता है। नियंत्रक सामान्य उपयोगकर्ताओं को संपादन, हटाने, देखने आदि आदि से रोकता है जो उनके नहीं हैं - लेकिन वह प्रशासनिक उपयोगकर्ता को उनको संपादित करने की अनुमति देता है। एड्रेस कंट्रोलर क्लास एड्रेसमोडेल से पूछ सकता है अगर वर्तमान में लॉग इन किया गया उपयोगकर्ता सामान्य या सुपरसियर ऑपरेशंस कर रहा है।
यह सब अच्छी तरह से काम करता है और डेटाबेस अपडेट अपेक्षित के रूप में किए जाते हैं, हालांकि, मैं वास्तव में ऑपरेशन मोड के आधार पर अलग-अलग HTML दृश्य देखना चाहता हूं। मैं केवल कि प्राप्त करने के लिए दो तरीके के बारे में सोच सकते हैं:
- आपरेशन के मोड बनाओ (सामान्य/विशेषाधिकार प्राप्त) AddressController कक्षा में जाना जाता है (एक उदाहरण चर का उपयोग कर, जैसे @privileged) और में एक "अगर" बयान का उपयोग दृश्य
- एक अलग लेआउट प्रस्तुत करने के लिए पता नियंत्रक में "after_filter" जैसा कुछ उपयोग करें।
यदि ऑपरेशन के तरीके के आधार पर दो पूरी तरह से अलग लेआउट में एक नियंत्रक को निष्पादित करने के परिणाम प्रदर्शित करना संभव है, तो इसे प्राप्त करने का एक अच्छा तरीका क्या है?
अग्रिम स्टीफन
धन्यवाद। लेकिन ऐसा लगता है कि अगर मैं ऐसा करता हूं, तो मैं "कॉन्फ़िगरेशन पर सम्मेलन" का मार्ग छोड़ दूंगा। मैं थोड़ा चिंतित हूं - यह मेरा पहला रेल एप्लिकेशन है - क्या मुझे पहले से ही क्या करना है, सब कुछ क्या करना चाहिए? – cite
खैर, तर्कसंगत सम्मेलन एक कार्रवाई के लिए एक दृश्य प्रस्तुत करना है, लेकिन मैं देख सकता हूं कि आप क्या प्राप्त कर रहे हैं। यदि आप केवल अलग-अलग लेआउट की तलाश में हैं तो स्टाइलन का समाधान एक अच्छा है। यदि आप वास्तव में कार्रवाई में तर्क के आधार पर अलग-अलग विचार प्रस्तुत करना चाहते हैं तो मुझे यकीन नहीं है कि यह स्पष्ट करने के लिए कि आप किस दृश्य को प्रस्तुत करना चाहते हैं, उसे दूर करने के लिए मूल सम्मेलन के करीब पर्याप्त है। – Shadwell
मुझे लगता है कि मैं लेआउट के लिए स्टाइलन के समाधान का प्रयास करूंगा और टेम्पलेट के लिए आपका एक प्रस्तुत किया जाएगा। एक बार फिर धन्यवाद। – cite