答案 0 :(得分:102)
您可以对控制器进行子类化并将路由器配置为使用:
class SessionsController < Devise::SessionsController
layout false
end
在config/routes.rb
:
devise_for :users, :controllers => { :sessions => "sessions" }
您还需要将会话视图移动到此控制器。
或在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
答案 1 :(得分:36)
您还可以在app / views / layouts / devise中创建sessions.html.erb文件。然后,该布局将仅用于登录屏幕。
答案 2 :(得分:7)
使用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
在您的视图/布局中创建一个devise.html.erb文件
因此,如果它的设备控制器将呈现设计布局,那么应用程序布局
来自:https://github.com/plataformatec/devise/wiki/How-To:-Create-custom-layouts