【Rails入門】redirect_toの使い方まとめ

こんにちは! フリーエンジニアの長瀬です。

みなさんはredirect_toを使っていますか?

redirect_toを使えば、自動的なページの切り替えを簡単に実装できます。

この記事では、redirect_toの使い方について

・redirect_toとは
・redirect_toの基本的な使い方

という基本的な内容から、

・redirect_ toにメッセージを設定する

といった応用的な内容についても解説していきます。

redirect_toとは

redirect_toとはコントローラーのアクション内で自動的にページに切り替えるためのメソッドです。

例えば、フォームで値を送信し、データベースに保存した後にそのまま一覧を表示したい場合などに使用します。

redirect_toでは外部サイトの指定、パラメータの送信、メッセージの設定など開発者に嬉しい機能がたくさん用意されています。

ウェブサイトを作成していくには必須の機能ですので、しっかりと学習しておきましょう。

redirect_toの基本的な使い方

redirect_toにアクションを指定する方法

それでは、実際にredirect_toを使ってみましょう。
今回使用するコントローラーを作成するので、コマンドプロンプトに以下のコードを入力してください。

[Test1コントローラーと3つのアクションを作成する]

これで、Test1コントローラーとredirect、example1、example2の3つのアクションを作成できました。

それでは、今回はredirectアクションにredirect_toメソッドを定義していきましょう。

app/controllers/tes1_controller.rbを開いて、redirectアクションを以下のように修正してください。

[redirectアクションを修正する]

続いて、結果を確認するためにコマンドプロンプトにrails sと入力して、サーバーを起動してください。

そして、redirectアクションのルーティングを確認するためにapp/config/route.rbを開いてルーティングを確認してください。

[app/config/route.rbの内容]

ルーティングが確認できたので、以下のURLにアクセスしてredirectアクションを実行してください。

http://localhost:3000/test1/redirect

(補足http://localhost:3000の箇所は各自の開発環境により読み替えてください。)

Screen Shot 2560-07-21 at 15.33.27

このようにredirect_toで指定したアクションを実行したのを確認できます。

また、アクションの指定は同一のコントローラー内でなくても指定できます。

別のコントローラを作成するためにコマンドプロンプトに以下のコードを入力してください。

[別のコントローラーTest2とアクションを作成する]

これでTest2コントローラーとexample3アクションが作成されました。

では、rediretアクションのredirect_toに今回作成したexample3アクションを指定してみましょう。

app/controllers/tes1_controller.rbを開いて、redirectアクションを以下のように修正してください。

[redirectアクションを修正する]

controller: :tes2でコントローラーを指定して、action: :example3でアクションを指定しています。

続いて、結果を確認するためにコマンドプロンプトにrails sと入力して、サーバーを起動してください。

以下のURLにアクセスしてredirectアクションを実行してください。

http://localhost:3000/test1/redirect

Screen Shot 2560-07-21 at 15.40.07

このように、別のコントローラーで指定したアクションを指定できました。

redirect_toに外部サイトを指定する方法

続いて、redirect_toに外部サイトを指定してみましょう。

app/controllers/tes1_controller.rbを開いて、redirectアクションを以下のように修正してください。

[redirectアクションを修正する]

続いて、結果を確認するためにコマンドプロンプトにrails sと入力して、サーバーを起動してください。

以下のURLにアクセスしてredirectアクションを実行してください。

http://localhost:3000/test1/redirect

Screen Shot 2560-07-21 at 15.43.12

侍内のRuby on rails記事一覧が表示されたのを確認できます。

(サイトの内容は記事一覧の更新によって変わりますので、ご了承ください。)

このように外部サイトにリダイレクトする場合はそのままURLを引数に設定するだけで実装できます。

redirect_toにパラメータを渡す方法

次はredierct_toでパラメーターを渡す方法をご紹介します。

まずは今回使用するモデルを作成するためにコマンドプロンプトに以下のコードを入力してください。

[Samuraiモデルを作成する]

これでモデルとnameカラムが作成されました。

次に今回使用するデータを入れるので、rails consoleでコンソールを起動した後、以下のコードを入力してください。

[samuraisテーブルにデータを追加する]

[実行結果]

Samurai.allの結果はHirbというgemを使って表示しています。まだ、インストールの済んでいない方はこちらの記事を参考にしてください。

【Rails入門】初心者が知っておくべき3つのgem
更新日 : 2017年10月19日

次にリソース(URL)にパラメーターを渡せるようにするため、app/config/route.rbのget ‘test1/example2’を以下のように修正してください。

[app/config/route.rbを修正する]

これで、example2アクションを実行したときにidをパラメーターとして送ることができます。

次にコントローラーとビューにそれぞれ以下のコードを追加してください。

[app/controller/test1_controller.rbを修正する]

params[:id]で送られてきたパラメーターを使用できます。

[app/views/test1/example2.html.erbを修正する]

ビューにコントローラーで取得した結果を出力します。

ではredirectアクションにredirect_toメソッドを設定していきましょう。

app/controllers/tes1_controller.rbを開いて、redirectアクションを以下のように修正してください。

[redirectアクションを修正する]

id:3と記述することでidの値を次のアクションに渡せます。

続いて、結果を確認するためにコマンドプロンプトにrails sと入力して、サーバーを起動してください。

以下のURLにアクセスしてredirectアクションを実行してください。

http://localhost:3000/test1/redirect

Screen Shot 2560-07-21 at 16.15.21

idが3の楠木正成が表示されているのを確認できます。

このように、パラメーターを渡して表示できました。

redirect_backを使って前のページに戻る方法

前のページに戻るのにrails5.1以前ではredirect_to :backが使用されていましたが、rails5.1以降はredirect_backというメソッドが追加されました。

それではredirect_backを使うための環境を整えていきましょう。

app/controllers/tes1_controller.rbを開いて、example1アクションを以下のように修正し、createアクションを新たに定義します。

[redirectアクションを修正し、createアクションを追加する]

ここでredirect_backで、URL(text_example1_path)を指定し、データがデータベースに保存されたら前のページに戻るように設定しています。

次に作成したcreateアクションにリソース(URL)を割り当てましょう。
以下のコードを追加してください。

[app/config/route.rbを修正する]

では次は、ビューを修正していきましょう。

[app/views/test1/example1.html.erbを修正する]

これで準備が整いました。

結果を確認するためにコマンドプロンプトにrails sと入力して、サーバーを起動してください。

以下のURLにアクセスしてexample1アクションを実行してください。

http://localhost:3000/test1/example1

Screen Shot 2560-07-21 at 21.02.48

実際に名前のところに、好きな侍の名前を入れて保存ボタンを押してみてください。

データが追加された後、redirect_backで指定したとおり前のページに戻ることを確認できます。

redirect_ toにメッセージを設定する

redirect_toではnoticeやalertを使うことでflashメッセージを設定できます。

flashメッセージとはよく、サイトの上の方に出てくる『ログインに成功しました。』などの一度だけ表示されるメッセージのことです。

それでは、まずapp/controllers/tes1_controller.rbを開いて、redirectアクションを以下のように修正してください。

[redirectアクションを修正する]

このようにnoticeで、flashメッセージを設定しています。

次にビューにメッセージが表示されるように設定します。

[app/views/test1/example1.html.erbを修正する]

結果を確認するためにコマンドプロンプトにrails sと入力して、サーバーを起動してください。

以下のURLにアクセスしてredirectアクションを実行してください。

http://localhost:3000/test1/redirect

Screen Shot 2560-07-21 at 23.05.44

このようにredirectに成功しましたというメッセージを確認できます。

まとめ

いかがでしたでしょうか?

この記事ではredirect_toの使い方を解説しました。

redirect_toを使いこなせば、ページの遷移をしっかりと実装できます。

パラメーターを渡したり、外部サイトにアクセスしたり、前のページに戻ったりと基本的な機能をマスターしていれば快適なウェブ開発が可能です。

もしredirect_toの使い方について忘れてしまったらこの記事を確認してくださいね!

エラーばかりでプログラミング学習が進まない、と悩んでいませんか?

プログラミング学習を始めたけれど、エラーの原因がよく分からなかったり、調べてみたけれど解決されず「どうやって進めればいいんだろう」と放置してそのまま挫折しかけていませんか?

一度進め方が分からなくなるとやる気も失せてしまいますよね。

そんなあなたにオススメしたいのが、「侍エンジニア塾」の無料体験レッスンです。独学で1000時間以上の学習が必要と言われているところを300時間に短縮する「プログラミング独学法」をお伝えします。

下記の無料体験レッスン予約カレンダーよりお申し込みいただけます。あなたのご相談を心よりお待ちしております。

LINEで送る
Pocket

書いた人

長瀬来

長瀬来

Unityを使ったiOSアプリのリリース、フリマサイト運営の経験があります。

経験した言語はC、C#、Javascript、R、Python、Ruby、PHPなど

言語が好きで、英語や中国、ドイツ語を勉強しました。
将来的には海外で生活したいです。

現在はRuby on Rails5やCocos2dxの勉強を主にしています。

ライターとしては
できるだけ初心者にわかりやすい文章になるように心がけています。

趣味は語学、読書です。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説