शायद इसके लिए एक तकनीकी/कार्यान्वयन कारण है, लेकिन ऐसा लगता है कि "लेआउट" दृश्य परत के स्पष्ट रूप से स्पष्ट रूप से हिस्सा है, फिर भी रेल केवल नियंत्रक स्तर पर लेआउट निर्दिष्ट करने की अनुमति देता है।रेल दृश्य दृश्य की बजाय लेआउट चयन को नियंत्रक चिंता क्यों करते हैं? क्या मैं एक दृश्य से लेआउट चुन सकता हूं?
मेरे नियंत्रक को लेआउट के बारे में परवाह नहीं करना चाहिए ... टेम्पलेट्स चाहिए। क्या .erb फ़ाइल के भीतर से कौन से लेआउट का उपयोग करना है यह निर्दिष्ट करने का कोई तरीका है?
कुछ की तरह:
<%= with_layout :news_feed do %>
<p>
My markup in here.
</p>
<% end %>
या किसी अन्य कार्यान्वयन आप सोच सकते हैं ... लेकिन प्रलेखन केवल नियंत्रक के नजरिए से लेआउट का उल्लेख करने लगता है।
शायद with_layout
सहायक को लागू करना बहुत कठिन नहीं होगा।
संपादित करें | मैंने पाया कि मैं वास्तव में क्या देख रहा था:
<% render :layout => "some_layout" do %>
<p>
My markup here
</p>
<% end %>
अब आप अपने ActionController है प्रदान की:
class ApplicationController < ActionController::Base
layout nil
फिर प्रत्येक टेम्पलेट अपने स्वयं के लेआउट का चयन कर सकते हैं, इस दृष्टिकोण का उपयोग कर।
यदि आप एप/लेआउट में लेआउट डालते हैं, तो नियंत्रक से मेल खाने वाले नाम के साथ, उस लेआउट का उपयोग किया जाएगा, इसलिए आपको सख्ती से यह निर्दिष्ट नहीं करना चाहिए कि वे सभी समान हैं या नहीं।
लेआउट प्रतिपादन के बारे में है: किसी भी तरह से, दोस्त कैसे अब अपने टेम्पलेट लिखते हैं उस पर पूरा नियंत्रण है, न कि दोस्त है जो नियंत्रक :)
धन्यवाद, हाँ, मुझे यह दस्तावेज़ों से मिला है, लेकिन यह वास्तव में थोड़े अजीब लगता है। हमारी टीम डिजाइनरों और डेवलपर्स में काफी स्पष्ट रूप से विभाजित है, और डिजाइनरों को कभी भी हमारे नियंत्रकों को छूना नहीं चाहिए। शायद हम सामने वाले लोगों द्वारा शामिल शीर्ष और निचले हिस्सों के लिए एक खाली लेआउट का उपयोग करने के लिए वापस आ जाएंगे। या शायद मैं ऐसे समाधान की जांच करूंगा जो 'with_layout' ब्लॉक को अनुमति दे। हमारे पास चार या पांच "मानक" लेआउट हैं, और वे किसी भी विशिष्ट नियंत्रकों से जरूरी नहीं हैं ... यह केवल पृष्ठ सामग्री पर निर्भर करता है। – d11wtq
'<% रेंडर: लेआउट =>" some_layout "%%> .... <% end %>;) – d11wtq
@ d11wtq - मुझे लगता है कि आप कहां से आ रहे हैं, हालांकि आपके डिजाइनरों को अभी भी नियंत्रक कोड को स्पर्श करने की आवश्यकता नहीं होगी? वे केवल लेआउट निर्देशिका में लेआउट बना सकते हैं और फिर डेवलपर्स यदि आवश्यक हो तो कोई सशर्त कोड जोड़ देंगे। आम तौर पर आप शायद 95% समय के लिए कंट्रोलर नामकरण सम्मेलन योजना से दूर हो सकते हैं। – McStretch