प्रस्तुत करना मैं एक वेब साइट को दो वर्गों में विभाजित करने की कोशिश कर रहा हूं। एक जिसे अनुप्रयोग लेआउट का उपयोग करना चाहिए और एक जिसे व्यवस्थापक लेआउट का उपयोग करना चाहिए। इस प्रकार मेरी application.rb में मैं एक समारोह बनाया:रेल पर रूबी - लेआउट
def admin_layout
if current_user.is_able_to('siteadmin')
render :layout => 'admin'
else
render :layout => 'application'
end
end
और नियंत्रकों में जहां यह एक हो सकता है या अन्य मैं
before_filter :admin_layout
यह कुछ पृष्ठों के लिए ठीक काम करता है डाल (जहां इसकी सिर्फ पाठ), लेकिन दूसरों के लिए मैं क्लासिक त्रुटि मिलती है:
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each
किसी को भी मैं क्या याद कर रहा हूँ की एक विचार है? मुझे रेंडर और लेआउट का सही तरीके से उपयोग कैसे करना चाहिए?
हालांकि जब तक कथन अनावश्यक नहीं है? और current_user.is_able_to ('siteadmin') वर्तमान_user के रूप में लॉग इन नहीं होने पर शून्य हो सकता है! –
@ रेबेन, यह एक अच्छा मुद्दा है; जोड़ा। – molf
मेरे पास उस लाइन से पहले अन्य चेक हैं, यह जांचने के लिए कि कोई उपयोगकर्ता लॉग इन है या नहीं। यह आश्चर्यजनक है, मैंने कभी भी लेआउट के बाद फ़ंक्शन को कॉल करने के बारे में सोचा नहीं। इतना आसान और बहुत उपयोगी। धन्यवाद। – RyanJM