56 votes

Rails & Devise: Comment rendre la page de connexion sans mise en page?

Je sais que c'est probablement une question simple, mais j'essaie toujours de comprendre Devise ...

Je veux render :layout => false sur ma page de connexion; Comment puis-je faire cela avec Devise ?

105voto

iain Points 11602

Vous pouvez sous-classer le contrôleur et configurer le routeur pour qu'il utilise ceci:

 class SessionsController < Devise::SessionsController
  layout false
end
 

Et en config/routes.rb :

 devise_for :users, :controllers => { :sessions => "sessions" }
 

Vous devez également déplacer les vues de session sur ce contrôleur.

OU créer une méthode en app/controllers/application_controller.rb :

 class ApplicationController < ActionController::Base

  layout :layout

  private

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

end
 

37voto

Paul Raupach Points 332

Vous pouvez également créer un fichier sessions.html.erb dans app / views / layouts / invent. Cette disposition ne sera alors utilisée que pour l'écran de connexion.

8voto

msroot Points 226

À l'aide de la devise_controller? d'assistance que vous pouvez déterminer la date de Concevoir un contrôleur est active, et réagir en conséquence. D'avoir à Concevoir une mise en page pour le reste de votre demande, vous pourriez faire quelque chose comme ceci:

class ApplicationController < ActionController::Base
  layout :layout_by_resource

  protected

  def layout_by_resource
    if devise_controller?
      "devise"
    else
      "application"
    end
  end
end

créer un dispositif.html.erb fichier dans votre dossier views/layouts

Donc, si son un dispositif de contrôleur de rendre le dispositif de mise en page reste la présentation de l'application

de: https://github.com/plataformatec/devise/wiki/How-To:-Create-custom-layouts

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X