【Rails】 renderとredirect_toの違い

[環境]
Rails 5.2.6
ruby 2.6.5

メンターさんにrenderとredirect_toの違いを聞いた。

困ったこと

ログイン失敗後に再度、ページの更新ボタンで読み込みを行うとエラーが発生する。

コード内容はこちら↓

# sessions_controller.rb
def create
    user = User.find_by(email: params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
      session[:user_id] = user.id
      redirect_to user_path(user.id)
    else
      flash.now[:danger] = 'ログインに失敗しました'
      render :new
    end
  end

renderを使用するメリット

1から読み込み直すredirect_toと比べ、renderには早く表示ができるメリットがある。 (ただ戻すのか(render:)、一からページを読み込んで表示するのか(redirect_to:)の違いがある。 )

renderを使用するとエラーが出る原因

【renderをした場合は記憶の中にあるviewのページを表示しているだけ】

ログインに成功すればsessions_controller.rbのcreateアクション(ログイン状態を作成するためのアクション)に処理が進んでいるはずだったので、URLが「/sessions」になってしまっている。その為このURL(/sessions)のまま更新ボタンを押してしまうと、表示しているページと現在のURLの ミスマッチが生じて、No Route error またはRouting Errorが発生してしまう。