2011-02-26 2 views
9

में केवल एक निश्चित पृष्ठ के लिए अलग-अलग लेआउट मैं अपने रेल ऐप में केवल एक निश्चित कार्रवाई के लिए एक अलग लेआउट रखना चाहता हूं। मैं उसको कैसे करू?रेल

+1

http://guides.rubyonrails.org/layouts_and_rendering.html की – ecoologic

+0

संभावित डुप्लिकेट [कैसे एक राय यह है कि एप्लिकेशन के बाकी के रूप में एक ही लेआउट का उपयोग नहीं करता जोड़ने रेल 3,?] (http://stackoverflow.com/questions/5090084/rails-3-how-add-a-view-that-does-not-use-same-layout-as-rest-of-app) – mlt

उत्तर

7
layout :resolve_layout 

    . 
    . 
    . 
    private 
     def resolve_layout 
     case action_name 
     when "new" 
      "alternate" 
     else 
      "application" 
     end 
     end 
26
# controller that calls the page 
def action 
    render :layout => 'other' 
end 
+0

तो मेरे मामले में, मेरा "डीफ़ एक्शन" "डीई होमपेज" एकेए इंडेक्स है। मैंने एक layout.css.scss फ़ाइल बनाई और इसे अपने स्टाइलशीट फ़ोल्डर में रखा और 'रेंडर लाइन' में 'अन्य' 'लेआउट' के साथ जोड़ा और मेरा एप्लिकेशन क्रैश हो गया। मैं उलझन में हूं कि मैं क्या गलत कर रहा हूं। मेरी नई लेआउट फ़ाइल मेरी मूल लेआउट फ़ाइल के समान है। – Jubl

+0

कोड की जांच किए बिना कहना मुश्किल है, एक नया प्रश्न खोलें और मैं – ecoologic

19
class MyController < ApplicationController 
    layout "special", :only => :action 

    def action 
    #action code 
    end 
end 
+0

हम्म देख सकता हूं। दरअसल, यह उस नियंत्रक के लिए मेरे सभी अन्य कार्यों को कोई लेआउट नहीं बनाता है। उनको वापस लाने का कोई तरीका? –

+2

मैंने कोशिश नहीं की है, लेकिन डिफ़ॉल्ट रूप से शीर्ष पर एक और पंक्ति डालने के बारे में क्या? कुछ 'लेआउट' सामान्य '#: को छोड़कर =>: कार्रवाई' – ecoologic

+1

@ecologic, जो काम नहीं करेगा (रेलवे 3.0.एक्स में भी)। आप प्रति नियंत्रक केवल वैश्विक एक लेआउट घोषणा कर सकते हैं – SooDesuNe