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

[解決済み] Deviseのログインをrootページに設定する

2023-04-27 23:32:49

質問

以下のコードをルーティングに使用しています。

devise_for :user, 
  :as => '', 
  :path_names => { 
    :sign_in => "", 
    :sign_out => "logout", 
    :sign_up => "register" 
  }

しかし、ログアウトしているときに /logout というエラーが出ます。

No route matches {:action=>"new", :controller=>"devise/sessions"} に一致するルートがありません。

ルートパスの設定方法を教えてください。 :sign_in アクションになりますか?

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

エラーについて質問されている方の続報ですが Could not find devise mapping for path "/" というエラーが発生しますが、回避策があります。

おそらくログにヒントがあるはずです。

[Devise] Could not find devise mapping for path "/".
This may happen for two reasons:

1) You forgot to wrap your route inside the scope block. For example:

  devise_scope :user do
    match "/some/route" => "some_devise_controller"
  end

2) You are testing a Devise controller bypassing the router.
   If so, you can explicitly tell Devise which mapping to use:

   @request.env["devise.mapping"] = Devise.mappings[:user]

そこで、私はこのアプローチを再試行しましたが、代わりに(@miccetが提案するように)スコープブロックの中でラップしました。

devise_scope :user do
  root to: "devise/sessions#new"
end

これは私にとってうまくいきました