ページのリダイレクト機能!Ruby on Railsでredirect_toの使い方【初心者向け】

Ruby on Railsで書くredirect_toの使い方について解説しています。会員登録後のページのリダイレクトなどはWebサイトでよく見ます。実際に使える便利なメソッドなので、ぜひ覚えておきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,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

そのままページを開くと以下のようなページが開かれます。

671ba71f30bebabbdd7be29480a1dba4-300x120
 

田島悠介

まず最初に、localhost:3000で「index」を表示させるように設定したよ。

大石ゆかり

ここからredirect_toの処理によって、「red」の画面にリダイレクトするようにするんですね。

田島悠介

そうだね。コントローラーを以下のように編集しよう。

 

次にredirect_toを使用してredアクションに対応するビューを表示してみましょう。以下のようにソースコードを変更してください。

class PagesController < ApplicationController
def index
redirect_to :action => 'red'
end

def red
end
end

3d62f7c1ef2d287b6476527ef5f82a80-300x128

すると、見事redアクションに対応するビューが表示されていることがわかります。

 

renderとの違い

redirect_toとよく似た働きの、メソッドにrenderというものが存在します。renderで表示した場合以下のように表示されます。

682c544602fa3a75a058b0664d896c5c-300x132

ご覧の通り、表示自体は同じですが、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アプリを開発したい方はご参加ください。