こんにちは、Nanayakuです。
今回は、railsでcontroller内で処理をした後に、直前のページにレダイレクトする方法を紹介します。
目次
エラーの原因・対処方法
「redirect_to :back」で直前のページにリダイレクト出来ると言う記事が多くありますが、それはRails4以前のバージョンでしか使用出来ません。
Rails5以降のバージョンでは、下記のように書きます。
redirect_back(fallback_location: root_path)
と書けばエラーが出ません。
実際の画面とコード
— Nanayaku@techbooster (@789__PQ) September 1, 2019
GitHub
アラートの表示方法
直前のページにリダイレクトした時にアラートを表示する場合、「redirect_to :back」の時と同じように書いても表示されません。
redirect_to root_path, success: '登録に成功しました'
アラートを表示するには「flash[]」を使用します。
flash[:success] = '’いいね’しました'
redirect_back(fallback_location: root_path)
実際の画面とコード
— Nanayaku@techbooster (@789__PQ) September 1, 2019
まとめ
Railsのバージョンが5以降で、直前のページにリダイレクトする場合は、redirect_toではなくredirect_backを使用する。
redirect_back(fallback_location: root_path)
アラートを表示したい場合は、上記の前にflash[]を書く。
flash[:alert] = '表示したい文字'
flash[:alert] = '表示したい文字'
redirect_back(fallback_location: root_path)
最後に
備忘録がわりに作ったので、間違っている所とかあったら、コメントくれると嬉しいです。
今回作ったアプリのコードをGitHubにあげているので、よかったらご覧ください。