ページのリダイレクト機能!Ruby on Railsでredirect_toの使い方【初心者向け】
Ruby on Railsで書くredirect_toの使い方について解説しています。会員登録後のページのリダイレクトなどはWebサイトでよく見ます。実際に使える便利なメソッドなので、ぜひ覚えておきましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
RubyのフレームワークのRuby On Railsにはredirect_toと呼ばれる機能が存在します。これは実行された際に指定されたページにリダイレクトするという機能です。今回は実際にリダイレクトを使用してみる、また似た機能であるrenderとの違いについても解説していきたいと思います。
なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。
田島メンター!!redirect_toメソッドはどういう風に使うんですか~?
redirect_toは名前の通り、指定したURLにリダイレクトを行うことができるメソッドだよ。
他のページを呼び出すというと、renderというのもありましたね。
renderとredirect_toは少し機能が違うので、そこについても解説していこう。
redirect_toを使用してみる
今回はPagesというコントローラーを作成して、その中にindex,redというアクションをそれぞれ作成しましょう。ソースコードでは以下の通りです。
class PagesController < ApplicationController def index end def red end end
その後rootをindexアクションに設定します。ソースコードでは以下の通りです。
Rails.application.routes.draw do root 'pages#index' get 'pages/index' get 'pages/red' end
そのままページを開くと以下のようなページが開かれます。
まず最初に、localhost:3000で「index」を表示させるように設定したよ。
ここからredirect_toの処理によって、「red」の画面にリダイレクトするようにするんですね。
そうだね。コントローラーを以下のように編集しよう。
次にredirect_toを使用してredアクションに対応するビューを表示してみましょう。以下のようにソースコードを変更してください。
class PagesController < ApplicationController def index redirect_to :action => 'red' end def red end end
すると、見事redアクションに対応するビューが表示されていることがわかります。
renderとの違い
redirect_toとよく似た働きの、メソッドにrenderというものが存在します。renderで表示した場合以下のように表示されます。
ご覧の通り、表示自体は同じですが、URLの部分に注目してみてください。
redirect_toは「localhost:3000/pages/red」になっているのに対し、
renderは「localhost:3000」とルートのまURLのままになっています。これはredirect_toがそこで指定したページにリダイレクトするのに対し、renderは指定したページを表示するというメソッドだからです。
今回はredirect_toについて解説しました。このメソッドは使いこなすことができるとページ遷移をより簡素な形で書くことが可能になります。是非使いこなせるようにしておきましょう。
最後にrenderとの違いを解説したよ。
renderのときはアドレスがそのままで、redirect_toだと指定先に変更されてますね。
redirect_toは移動するもの、renderはその場に表示させるものという風に捉えておこう。
なるほど、分かりました。ありがとうございます!
[お知らせ]TechAcademyでは初心者でも8週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。RubyでWebアプリを開発したい方はご参加ください。