railsのルーティングについて知りたいです。
今回は上記の疑問に答える記事です。
本記事を読む事で、
・ルーティングとは?
・ルーティングで何ができるのか?
上記2つが分かりますので、是非読んで頂ければと思います。
【目次】
【まず知っておきたい】ルーティングとは?
画面からリクエスト(ボタンが押された時など)があった時、どのコントローラーのどのアクション(メソッド)を呼び出すか?を指示するための道しるべ
です。
尚、「コントローラー」と「アクション」というワードは知っている前提で書いています。
そして、ルーティングはRailsとデータベースのやり取りで必須です。
何故か?と言いますと・・・
データベースとのやり取りもメソッド内で書き、そのメソッドをどのタイミングで使用するか?を、ルーティングで確認する
からです。
是非、覚えておきましょう👍
ルーティングはどうやって設定するの??
RailsはURLによって、コントローラーに記載したメソッドを指定しています。
そして、そのルートを指定しているファイルは、あなたが開発しているアプリケーションフォルダ内のroute.rbというファイルです。
route.rbで、以下の様な記述が可能。(あくまで一例です)
Rails.application.routes.draw do root "tweets#index" get "tweets/new" => "tweets#new" post "tweets" => "tweets#create" end
例えば、上記のコードです。
2行目から順番に解説しますと・・・
2行目「root "tweets#index"」
→トップページ(初期表示時)で、tweetControllerのindexアクションを呼び出す
3行目「get "tweets/new" => "tweets#new"」
→URLの末尾が「/tweets/new」なら、tweetControllerのnewアクションを呼び出す
4行目「post "tweets" => "tweets#create"」
→URLの末尾が「/tweets」なら、tweetControllerのcreateアクションを呼び出す
こんな感じです👍
改めてルーティングとは・・・
画面からのリクエスト(URL)から、どのコントローラーのどのアクションを呼び出すか?を指示するための道しるべ
という感じで理解頂ければと思います。
ですので、がんばってモノにしてください。
例題
次のようなコントローラーがあります。
class ArticlesController < ApplicationController def show article = Article.find(params[:id]) end end
上記コードの5行目のArticle.find(params[:id])という記述のうち、params[:id]には詳細表示されたいレコードのidが格納されます。
なぜそのような動作になるのか?を解説していきますね。
例題の解説
ターミナルで「rails routes」を使いアプリケーションのルーティングを確認すると、通常showアクションには以下のような設定がされています。
Prefix Verb URI Pattern Controller#Action tweet GET /tweets/:id(.:format) tweets#show
そのため、例えば「localhost:3000/tweets/3」というURLを指定すると、「3」が「:id」の値として代入されるイメージです。
つまりURL「localhost:3000/tweets/3」を指定すれば、画面上の動作としてはtweet番号(この場合はidを指します)が「3」であるtweetを詳細表示できます。
そのため、コントローラー内でparams[:id]と指定することで、詳細表示したいレコードのidを格納することができます。
最後に
以上、railsでのルーティングについて解説しました。
ルーティングを理解できれば、あなたの開発の幅がさらに広がって楽しくなります。
難しいと思いますが頑張ってください!
これでまた一歩、Railsの知識及びエンジニアとしてのスキルが一段上がりましたね。
解説は以上となります、最後までありがとうございました!