2011-04-02 17 views
35

यदि मैं किसी निश्चित कार्रवाई (कहें, शो एक्शन) के लिए लेआउट का उपयोग करना चाहता हूं जो नियंत्रक.आरबी फ़ाइल के शीर्ष पर घोषित लेआउट से अलग है, तो मैं कैसे कर सकता हूं इस? रेल में यह संभव होना चाहिए, लेकिन मुझे इसके बारे में कुछ भी नहीं मिल रहा है।किसी विशिष्ट क्रिया के लिए लेआउट का उपयोग करें

+4

+1 और मैं सहमत हूं कि रेल दस्तावेज एक नरक है। –

उत्तर

42
render :layout => 'otherlayout' 
+1

इस उत्तर को स्वीकार करते हुए यह पूछे गए विशिष्ट प्रश्न का उत्तर देता है, लेकिन दोनों उत्तरों अच्छे हैं और लक्ष्य – providence

+4

+1 प्राप्त करें: जैसा कि मैंने कहा था, डॉन भी सही है। और इस तरह के लिए +1, कम से कम ट्रोलिंग समुदाय मैं कभी भी एक हिस्सा रहा हूं। हर कोई सही से उत्पादक होने के बारे में अधिक चिंतित है। जब इंटरनेट 2.0 बाहर आता है, यह प्राथमिक अवधारणा होना चाहिए। –

37
layout 'layout', :only => [:first_action, :second_action] 
layout 'second_layout', :only => [:third_action, :fourth_action] 

डॉन की सही रूप में अच्छी तरह, बस अपने आवेदन जो अधिक सूखी है पर निर्भर करता है (या सूखी-एर?)


संपादित मेरे पिछले कोड गलत है। आप कई बार layout फ़ंक्शन निर्दिष्ट नहीं कर सकते हैं। मैं गतिशील लेआउट प्रतिपादन के लिए इस समाधान ऑनलाइन पाया:

class OrdersController < BaseController 
    layout :determine_layout 

private 
    def determine_layout 
    %w(new).include?(action_name) ? "some_layout" : "public" 
    end 
end 

स्रोत: apidock.com/rails/Actio...

+4

+1: यदि आपके पास एकाधिक कार्रवाइयों पर लागू करने के लिए लेआउट हैं तो यह बेहतर होगा। –

+1

रेल प्रति फ़ाइल एकाधिक लेआउट विनिर्देशों को स्वीकार नहीं करते हैं। आप निर्दिष्ट कर सकते हैं: केवल ए, बी, सी लेकिन आप अलग-अलग लक्ष्यों के साथ एक और सेट निर्दिष्ट नहीं कर सकते हैं। –

+1

@BradBarrow एकाधिक लेआउट के लिए मेरा संपादन देखें –

0

निम्न उदाहरण विशिष्ट कार्रवाई करने के लिए इच्छित लेआउट लागू होता है, अन्यथा, यह डिफ़ॉल्ट लेआउट (लेआउट/application.html उपयोग करता है। ERB)।

class ArticlesController < ApplicationController 
    layout "article_editor", only: [:new, :edit] 

    def index 
    # default layout 
    end 

    def new 
    # article_editor layout 
    end 

    def edit 
    # article_editor layout 
    end 
end 
संबंधित मुद्दे

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