1. ホーム
  2. ruby-on-rails

[解決済み] デバイスのサインインアクションのレイアウトが違う

2023-05-12 09:26:24

質問

サインインアクションに "devise" という名前の異なる/カスタムレイアウトを使おうとしています。私は見つけた この のページを見つけたのですが、2つ目の例では、アクションごとにそれを行うことができるとさえ書かれています(この場合。 sign_in アクション)ごとに行えるとさえ言っていますが、それを行う例は示されていません。IRC で誰かが、これを試すことができると教えてくれました。

class ApplicationController < ActionController::Base
  protect_from_forgery

  layout :layout_by_resource

  def layout_by_resource
    if devise_controller? && resource_name == :user && action_name == 'sign_in'
      "devise"
    else
      "application"
    end
  end
end

しかし、デフォルトのアプリケーションレイアウトを読み込んだままなので、うまくいっていないようです。何か手助けがあれば幸いです。

どのように解決するのですか?

私は解決しましたが、他の人が興味を持つかもしれないので、この質問をここに残しておきます。

それは愚かな間違いでした。事実は sign_in がパスです。 ではなく はアクションではありません。を見ると 関連するソース を見ると、必要なアクションは new を作成すること、すなわち 新しい セッションを工夫する。上記のコードの条件を変更します。

if devise_controller? && resource_name == :user && action_name == 'new'

見事に動作しています。

誰かのお役に立てれば幸いです。