: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.