2011-11-10 23 views
12

के भीतर विचारों के लिए डिफ़ॉल्ट लेआउट प्रदान करना मेरे पास Admin नामस्थान के अंदर मौजूद मेरे ऐप के भीतर नियंत्रकों और संबंधित दृश्यों की एक श्रृंखला है। मैं इन विचारों को मुख्य नामस्थान की तुलना में एक अलग लेआउट का उपयोग करना चाहता हूं ताकि मैं उन्हें नियमित साइट पर एक अलग उपस्थिति दे सकूं। क्या रेलवे 'कार्यक्षमता में निर्मित का उपयोग करके मैं ऐसा कर सकता हूं? मुझे पता है कि अगर मेरे पास PostController वर्ग है और लेआउट निर्देशिका में posts.html.erb देखें, तो इसे किसी भी नियंत्रक के विचारों के लिए लेआउट के रूप में उपयोग किया जाएगा, क्या नामस्थान नियंत्रकों के लिए मैं कुछ ऐसा कर सकता हूं?नामस्थान

+0

इस के लगभग डुप्लिकेट है, और निश्चित रूप से करने के लिए संबंधित: http://stackoverflow.com/questions/4221856/rails-3- लेआउट-के-नेमस्पेस्ड-रूट – OnePablo

उत्तर

25

अपने व्यवस्थापक के नियंत्रकों के लिए कस्टम AdminController वर्ग है कि आप से विरासत के लिए जा रहे बनाएं के साथ किसी भी नियंत्रक के लिए डिफ़ॉल्ट लेआउट ओवरराइड कर सकते हैं। यह AdminController एप्लिकेशन नियंत्रक से विरासत में आता है और लेआउट ओवरराइड करता है।

class AdminController < ApplicationController 
    layout "admin" 
end 

class Admin::PostController < AdminController 
end 
5

layout विधि में आवश्यकता नहीं है। आपको अपनी लेआउट फाइलों को नेमस्पेस के लिए views/layouts/<namespace> में रखना चाहिए। नाम के साथ 'foo'

उदाहरण नाम स्थान:

नियंत्रक: app/views/layouts/foo/bar.html.erb

+3

इसका मतलब यह होगा कि आपको प्रत्येक नामांकित दृश्य के लिए एक लेआउट बनाना होगा – chrisan

5

मेरा मानना ​​है कि आप द्वारा इस खूबसूरत स्क्रीनकास्ट में अपने प्रश्न का सटीक जवाब मिल जाएगा: इस नियंत्रक के लिए app/controllers/foo/bar_controller.rb

लेआउट रयान बेट्स

http://railscasts.com/episodes/269-template-inheritance

(यानी आप रेल 3.1 उपयोग कर रहे हैं)

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