2012-06-18 19 views
9

Próbuję przygotować, aby wyświetlić inny szablon układu niż domyślny dla niektórych aspektów.Zmiana domyślnych układów domyślnych

Mam to działa, gdy użytkownik przechodzi do strony logowania, ale muszę wyświetlić inny układ rejestracji, zapomniane hasło i reset.

ten jest obecny kod w moim kontroler aplikacji:

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 

Odpowiedz

25

Jeśli nazwiesz alternatywny układ devise.html.erb, to kontrolery gem będą go oczywiście używać bez konieczności zadawania pytań. Zapisuje kod.

+0

Oto dokumentacja pokazująca wszystkie możliwe sposoby osiągnięcia tego celu: https://github.com/plataformatec/devise/wiki/How-To:-Create-custom-layouts – akz92

3

Nie trzeba obsługiwać układy przez siebie, po prostu zrobić:

rails generate devise:views 

Następnie spojrzeć w folderze opracować w folderze z widokami zobaczysz wszystkie formularze potrzebne do dostosowania:

+0

zrobiłem to, ale nadal używa mojego szablonu aplikacji, są tam bity informacji, których nie chcę wyświetlać, dopóki użytkownik nie jest zalogowany. Nie ma widoków jako takich, a układy te widoki są renderowane w ramach –

+0

jak dla mnie , Nie musiałem dotykać układów, wszystko, co robiłem, to generowanie szyny devise: widoki, następnie łatwo dostosowałem generowane widoki, które są renderowane w domyślnym wydaniu – simo

30

Dodaj ten wiersz kodu do aplikacji.rb:

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 

Jeśli chcesz tego samego układu dla wszystkich Opracować widoki, z wyjątkiem, gdy użytkownik edytuje swoje dane, można mieć coś takiego:

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 

Aby uzyskać więcej informacji można przeczytać article

+0

tylko problem z powyższym kodem jest to, że rejestrator kontrolny będzie również efekt, gdy poprawny zalogowany użytkownik jest tam edytowany hasło –

+0

Zaktualizowałem moją odpowiedź: – zolter

+0

, która wygląda na to, że może się to uda, dzięki Zolter :) –

Powiązane problemy