:new、:create、および :delete アクションを備えたセッション コントローラーがあります。現在のページ コントローラーをチェックするメソッドもあります。
def controller_for(path)
Rails.application.routes.recognize_path(path)[:controller]
end
通常、このメソッドは正常に機能しますが、ユーザーがアクセス/login
してログイン情報が正しくない場合、レールは URL を変更/sessions
してアクションをレンダリングし、:new
その時点で上記のメソッドはエラーをスローします。
No route matches "/sessions"
これrecognize_path
をやろうとしているようです:
>> r = Rails.application.routes
>> r.recognize_path "/sessions"
=> {:controller=>"sessions", :action=>"index"}
インデックス アクションがないため、エラーが発生しています。私が本当に欲しいのは、これです:
>> r.recognize_path "/login"
=> {:controller=>"sessions", :action=>"new"}
/login
では、サインインが失敗したときの URLを/sessions
.