Rails&Devise:如何呈现没有布局的login页面?

我知道这可能是一个简单的问题,但我仍然试图找出devise出来…

我想在我的login页面上render :layout => false ; 我怎么能用Devise做到这一点?

您可以对控制器进行子类化并将路由器configuration为使用:

 class SessionsController < Devise::SessionsController layout false end 

config/routes.rb

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

您也需要将会话视图移至此控制器。

或者app/controllers/application_controller.rb创build一个方法:

 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 

您也可以在app / views / layouts / devise中创build一个sessions.html.erb文件。 该布局将仅用于login屏幕。

通过使用devise_controller? 助手,你可以确定何时一个devise控制器是积极的,并作出相应的反应。 为了让Devise在应用程序的其他部分使用单独的布局,可以这样做:

 class ApplicationController < ActionController::Base layout :layout_by_resource protected def layout_by_resource if devise_controller? "devise" else "application" end end end 

在视图/布局中创build一个devise.html.erb文件

所以如果它的设备控制器将渲染devise布局,否则应用程序布局

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