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