2012-06-18 5 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:-Create-custom-layouts – akz92

3

Вам не нужно обрабатывать макеты вашей собственной личности, просто сделать:

rails generate devise:views 

Затем, посмотрите на папке DEViSE в видах просмотра вы увидите все формы, необходимые для настройки

+0

сделал это, но он все еще использует мой шаблон приложения, есть биты информации, я не хочу, чтобы отобразить до тех пор, пока пользователь не вошел в систему. Его не рассматривает в качестве такового, его макеты эти взгляды оказываются в –

+0

, как для меня , Мне не приходилось прикоснуться к макетам, все, что я сделал, это rails generate devise: views, то я легко настраивал сгенерированные представления, которые отображаются в стандартном уроне – simo

30

Добавить эти строки кода в ваше приложение. 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 

Если вы хотите такой же макет для всех Придумайте представления, когда пользователь редактирует свои данные, за исключением, вы могли бы что-то вроде этого:

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

+0

, только проблема с вышеуказанным кодом заключается в том, что диспетчер регистрации также будет эффект, когда действительный зарегистрированный пользователь редактирует там пароль –

+0

Я обновил свой ответ – zolter

+0

, который выглядит так, как будто это может сделать трюк, спасибо zolter :) –

Смежные вопросы