2012-06-18 15 views
9

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

उपयोगकर्ता यह लॉगिन कर रहा है जब उपयोगकर्ता लॉगिन पेज पर जाता है, लेकिन मुझे साइन अप, भूल गए पासवर्ड और रीसेट के लिए एक अलग लेआउट प्रदर्शित करने की आवश्यकता है।

यह मेरा आवेदन नियंत्रक में वर्तमान कोड है:

layout :layout 

    private 
    def layout 
    # only turn it off for login pages: 
    is_a?(Devise::SessionsController) ? "login" : "application" 
    # or turn layout off for every devise controller: 
    #devise_controller? && "application" 
    end 

उत्तर

25

यदि आप अपना वैकल्पिक लेआउट devise.html.erb नाम देते हैं, तो मणि के नियंत्रक स्वाभाविक रूप से इसका उपयोग किए बिना, पूछे जाने की आवश्यकता के बिना इसका उपयोग करेंगे। कुछ कोड बचाता है।

+0

यहां प्राप्त करने के लिए सभी संभावित तरीकों को दिखाए जाने वाले दस्तावेज़ यहां दिए गए हैं: https://github.com/plataformatec/devise/wiki/How-To:- बनाएं- कस्टम- प्लेआउट – akz92

3

तुम अपने आप से लेआउट संभाल करने की जरूरत नहीं है, बस कार्य करें:

rails generate devise:views 

फिर, वसीयत फ़ोल्डर को देखो विचार फ़ोल्डर में, आपको

+0

ऐसा किया गया है, लेकिन यह अभी भी मेरे एप्लिकेशन टेम्पलेट का उपयोग करता है, वहां सूचनाओं के बिट्स हैं जिन्हें मैं तब तक प्रदर्शित नहीं करना चाहता जब तक कोई उपयोगकर्ता लॉग इन नहीं होता है। इसके बारे में ऐसा नहीं लगता है, यह लेआउट उन विचारों को –

+0

के रूप में मेरे लिए प्रस्तुत किया जाता है , मुझे लेआउट को छूने की ज़रूरत नहीं थी, मैंने जो किया वह रेल तैयार करता है: विचार, फिर, मैंने जेनरेट किए गए विचारों को आसानी से अनुकूलित किया, जो डिफ़ॉल्ट उपज – simo

30

को अपने एप्लिकेशन में कोड की इस पंक्ति को जोड़ने के लिए आवश्यक सभी रूपों को देखेंगे। आरबी:

01 अधिक जानकारी के लिए

config.to_prepare do 
    Devise::SessionsController.layout "your_layout_name" 
    Devise::RegistrationsController.layout proc{ |controller| user_signed_in? ? "application" : "your_layout_name" } 
    Devise::ConfirmationsController.layout "your_layout_name" 
    Devise::UnlocksController.layout "your_layout_name"    
    Devise::PasswordsController.layout "your_layout_name"   
end 

आप इस article

पढ़ सकते हैं:
config.to_prepare do 
    Devise::SessionsController.layout "your_layout_name" 
    Devise::RegistrationsController.layout "your_layout_name" 
    Devise::ConfirmationsController.layout "your_layout_name" 
    Devise::UnlocksController.layout "your_layout_name" 
    Devise::PasswordsController.layout "your_layout_name" 
end 

आप सभी के लिए एक ही लेआउट विचारों वसीयत, उपयोगकर्ता अपने डेटा को संपादित कर रहा है जब के अलावा चाहते हैं, आप कुछ इस तरह हो सकता था

+0

में प्रस्तुत की जाती हैं, उपर्युक्त कोड के साथ केवल समस्या यह है कि रजिस्ट्रेशन कंट्रोलर भी होगा प्रभाव जब उपयोगकर्ता में एक वैध लॉग इन किया गया है वहां पासवर्ड –

+0

मैंने अपना उत्तर – zolter

+0

अपडेट किया है जो ऐसा लगता है कि यह चाल हो सकता है, धन्यवाद zolter :) –

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