2010-05-17 27 views
7

क्या रेलवे में नियंत्रक के भीतर से कोई दृश्य लेआउट मौजूद है या नहीं, यह जांचने का एक मानक तरीका है? मैं उपयोगकर्ता को लेआउट निर्धारित करने की अनुमति देने की कोशिश कर रहा हूं, लेकिन इसे पहले अस्तित्व में होना चाहिए।जांचें कि रेल में कोई लेआउट मौजूद है या नहीं?

उत्तर

2

जहां तक ​​मुझे पता है वहां कोई मानक सार्वजनिक तरीका नहीं है। आप इस प्रकार का अल्पविकसित कॉल इस्तेमाल कर सकते हैं:

layouts = Dir['app/views/layouts/*'].map {|f| 
    File.basename(f, '.html.erb') # returns 'layout' for 'layout.html.erb' 
} 
+0

ऐसा क्यों downvoted गया था: जिसके लिए exists?

उदाहरण के लिए एक उपनाम है? हालांकि स्पष्ट रूप से सही नहीं है, वास्तव में यह एक वैध उत्तर – OneChillDude

+0

हां, यह टेम्पलेट_एक्सिस्ट की तुलना में मेरे लिए बेहतर काम करता है? नीचे। –

0

मुझे लगता है कि बेहतर तरीका एक डेटाबेस में इन मूल्यों की दुकान, जब कोई उपयोगकर्ता से चुन सकते हैं होगा।

पिछली पोस्ट में सुझाए गए सुझावों के माध्यम से सत्यापित करने की कोशिश करने के बजाय।

एक लेआउट मॉडल का उपयोग करें और उपयोगकर्ता को चुनने दें।

23

आप template_exists का उपयोग कर सकते हैं? template_exists?("layout_name", "layouts")

+0

आपकी टिप्पणी ने मुझे सही दिशा में निश्चित रूप से इंगित किया है (ओपी के समान प्रश्न कौन है)। मौजूद? (और template_exists?) एक्शन व्यू :: लुकअपकॉन्टेक्स्ट (https://github.com/rails/rails/blob/master/actionpack/lib/action_view/lookup_context.rb) में विधियां हैं। मैं उन्हें अपने एप्लिकेशन नियंत्रक से उपयोग करना चाहता हूं। क्या वह बहुत जल्दी है? क्या वर्तमान लुकअप कॉन्टेक्स्ट पहले से सेट है? मैं इसे अपने एप्लिकेशन नियंत्रक से कैसे एक्सेस कर सकता हूं? –

+3

मुझे प्रश्न पोस्ट करने से पहले एक खोज करना चाहिए। LookupContext को AbstractController :: ViewPaths में प्रारंभ किया गया है और इसे आपके नियंत्रक में lookup_context के रूप में स्पष्ट रूप से एक्सेस किया जा सकता है। –

संबंधित मुद्दे