Deviseログイン画面のlayoutを変更する

方法①

application_controller.rbでlayoutを切り替える方法。
devise以外のcontrollerでもつねに判断が入るので、なんとなくスッキリしないような。

class ApplicationController < ActionController::Base
  layout :layout_by_resource

  protected

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

方法②

sessions_controller.rbをオーバーライドして、layoutを指定する方法。

  • deviseのオーバーライド用のcontrollerを作成します。
$ bundle exec rails g devise:controllers users
  • /app/controllers/users/sessions_controller.rbでlayoutを指定します。
class Users::SessionsController < Devise::SessionsController
  layout 'devise'
  ...
end

参考

How To: Create custom layouts · plataformatec/devise Wiki · GitHub