1

デバイスへのログインに別のレイアウト ファイルを使用したい。

静的ページを試しましたが、エラーが発生しますundefined local variable or method 'resource'

現在、私のアプリケーションコントローラーには次のものがあります。

layout :layout_by_resource

protected

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

これに関する問題は、すべてのデバイス ビューがレイアウト ファイル 'login' を使用することです。現在、アカウント ページにデバイスの編集登録フォームを使用しているため、これは適切ではありません。

デバイスにサインインするために別のレイアウトファイルを使用する最良の方法を知っている人はいますか?

4

2 に答える 2

2

これを機能させるには、2つのことを行う必要があるかもしれません。

1)指定されたレイアウト呼び出しを使用して、Deviseコントローラーから継承する個別のコントローラーを作成します。指示

2)ビュー自体をさらにカスタマイズするには、ビューをコピーします。指示は必要ないかもしれません。

1)コントローラーについて:ログインをカスタマイズするだけの場合は、セッションコントローラーをターゲットにする必要があります。

# app/controllers/sessions_controller.rb
class SessionsController < Devise::SessionsController
  layout :layout_for_action

protected

  def layout_for_action
    if params[:action] == '...' # See what the action is called internally beforehand
      "signin"
    else
      "application"
    end
  end

end

config/routes.rb次に、コントローラーを次の場所で使用するようにDeviseに指示する必要があります。

devise_for :admins, :controllers => { :sessions => "sessions" }
于 2013-02-11T19:24:07.557 に答える