Railsのルーティングについて解説

ルーティングとは


ユーザーの「何に対して」、「何をしたいのか」という要求をわかりやすくしたもので、ファイル上で見るとコントローラーにどんな動きをさせたいのかを指定する設定になります。

例えば、画面上で以下のようなリンクをクリックし読みたいページに移動したいとします。

すると、内部では、次のような動きをしていきます。

①”続きが読みたい”とユーザーから指令がきたとビューファイルからルーティングに報告します。

②ルーティングがビューファイルからの命令を解釈し、コントローラーにどのような動きをしてもらいたいか伝えます。

③ルーティングの指示通り、コントーラーが動き処理をすることでモデルファイルに必要なデータをデータベースから取ってくるように依頼します。(そのままビューを表示させる時もありますが)

④最終的に必要なビューファイルを表示させ、続きを読めるページに移動します。(以下参照)

《下図がファイルの動作順序イメージ》


どうやってこのような仕組みを作っているのか?


仕組みの種類

  • URL
  • HTTPメソッド

URLとは

インターネット上の住所みたいなものでGoogle検索窓に表示される部分の内容のこと(下図参照)

しかし、Rails上ではリソース(データ)を意味しています。

例えば、私の作ったwebアプリなのですが以下のようなURLがあった場合

今回は、AWSのCloud9でアプリを作っている為、最初の意味は、AWSのサイトの意味になります。

赤枠の部分では、データベースのblogsテーブルの中の16番のデータを取ってくると意味となり、表示されるのは16番目のデータという意味になります。


HTTPメソッドとは

Hyper Text Transfer protcol(ハイパー・テキスト・トランスファー・プロトコルの略でwebサーバーとのデータ送受信に使用される仕組みのことです。

HTTPメソッドで指定するメソッドは全部で8種類ありますが、よく使用するのは4種類になります。

以下に種類と詳細を載せておきます。

メソッド名機能
GETデータを取得する
POSTデータを登録する
PATCHデータを更新する
DELETEデータを削除する

このようにRailsではURLとHTTPメソッドを組み合わせることで目的の動きをさせています。

そのおおもとになるのが、ルーティングファイルになります。

次にルーティングの設定方法について見てみましょう。


ルーティングの設定方法


ルーティングの設定には2種類あります。雛形ファイルを作ることによってconfigフォルダ内にroutes.rbファイルができていますのでそのファイルを開いて記述します。


1、個別に設定する方法

下図のように記述していきます。

赤枠内のように設定すると、どのビューファイルでどのHTTPメソッドがを動かしたいのかと言う命令が入ってきた時にコントローラーのどの命令を動かしたいかの設定をすることができます。

ちなみに下図の意味を説明すると、

左辺は、どこかのファイルでHTTPメソッドの「get」がblogsに対して行われた時を意味します。

右辺は、blogsコントローラーのindexアクションを動かすと意味になります。

このコードによってビューファイルから’blogs’データを取得する命令がきた時、logsコントローラーのindexアクションを動かせと言う設定ができます。

ビューファイルの記述は、下図のようになっています。

コントローラー側の記述は下図のようになっています。

コントローラーに関する説明は別ページにまとめています。


2、まとめて設定する方法

resoursesメソッドを使用することでコントローラーの7つのアクションに繋がる設定をまとめて行うこともできます。下図が設定の例です。

さらに下図のように設定することで個別の設定も可能になります。

右側のonlyオプションを使用してあげると、コントローラーのcreateアクションのみを動かす設定だけを作ることができます。


ルーティングの設定を確認する方法

次に上で設定したルーティングを確認する方法を紹介します。

ターミナルで以下のように入力しエンターを押してみてください。

#ルーティングの確認コマンド
rails routes

すると、下図のような表示が出てきます。

resoursesメソッドを使った時は、下図のようになります。

コントローラーの7つのアクションに対応するルーティングができてます。

では、onlyオプションを使った時ではどうでしょうか?

1つだけ設定ができています。

このように設定ができているかを確認します。


まとめ


  • ルーティングとはコントローラーのどのアクションを動かしたいかを設定する為のもの
  • routes.rbファイルに記述する。
  • 個別に設定する方法とまとめて設定する方法がある。
  • 設定したルーティングはターミナルで確認できる。

コメント

タイトルとURLをコピーしました