web-dev-qa-db-ja.com

Rails&Devise:レイアウトなしでログインページをレンダリングする方法は?

これはおそらく簡単な質問ですが、私はまだ Devise out ...

したい render :layout => falseログインページで; Devise でこれを行うにはどうすればよいですか?

54
neezer

コントローラをサブクラス化し、それを使用するようにルーターを構成できます。

class SessionsController < Devise::SessionsController
  layout false
end

config/routes.rb

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

セッションビューもこのコントローラーに移動する必要があります。

[〜#〜] or [〜#〜]メソッドを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
103
iain

App/views/layouts/deviseにsessions.html.erbファイルを作成することもできます。そのレイアウトは、サインイン画面だけに使用されます。

36
Paul Raupach

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ファイルを作成します

そのため、デバイスコントローラーがデバイスレイアウトをレンダリングする場合、またはアプリケーションレイアウトをレンダリングする場合

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

8
msroot