Sun~sun~Flower's

〜ITエンジニアとして日々前向きに生きていくノウハウブログ〜

MENU

【Rails超基礎】知りたい!ルーティングで何が出来るかを徹底解説!

f:id:mTakata:20210510233606j:plain


railsのルーティングについて知りたいです。

 

今回は上記の疑問に答える記事になります。

 

本記事を読む事で、

・ルーティングとは?

・ルーティングで何ができるのか?

上記2つが分かりますので、是非読んで頂ければと思います。

 

【目次】

例題

次のようなコントローラがあります。

1

2

3

4

5

6

class ArticlesController < ApplicationController

 

  def show

    article = Article.find(params[:id])

  end

end

上記コードの5行目のArticle.find(params[:id])という記述のうち、params[:id]には詳細表示されたいレコードのidが格納されます。

 

なぜそのような動作になるのか、「rails routes」という言葉を使って説明してください。

【解説に入る前に】ルーティングとは?

f:id:mTakata:20201101112022j:plain

そもそもルーティングとは何なのか?についてです。

 

まず結論から言いますと、ルーティングとは

 

画面からのリクエスト(URL)から、どのコントローラーのどのアクションを呼び出すか?を指示するための道しるべ

 

です。

 

いきなり「コントローラー」や「アクション」が出てきて「??」って感じですよね。(すみません)

 

しかし、ルーティングはRailsとデータベースのやり取りで必須知識となります。

 

そしてRailsとデータベースとのやり取りはCRUD(クラッド)処理と言われ、この処理をするためにルーティングを使用します。

 

ちなみにCRUD処理については次の記事で詳しく解説していますので、是非よんでみてください。

www.sunsunflowers.com

 

上記記事の通り、Railsとデータベースとのやり取りは基本的に

Create(登録)

Read(参照)

Update(変更)

Delete(削除)

上の4つです。

 

また、この時にRailsURLによって、コントローラーに記載されたメソッドを指定しています。

 

例えば現在、あなたが開発しているアプリケーションフォルダ内にroute.rbというファイルがあると思います。

 

そちらに、以下の様な記述が書かれています。(あくまで一例です)

1 Rails.application.routes.draw do
2 root "tweets#index"
3 get  "tweets/new"  => "tweets#new"
4 post "tweets"      => "tweets#create"
5 end

上のコードの場合ですと、

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)から、どのコントローラーのどのアクションを呼び出すか?を指示するための道しるべ

という感じで理解頂ければと思います。

 

以上になります、ルーティングを知らないとデータベースとのやりとりが100%出来ません。

 

ですので、がんばってモノにしてください。

 

それでは、先ほどの例題の回答に移りますね。

 

例題の解説

ターミナルで「rails routes」を使いアプリケーションのルーティングを確認すると、通常showアクションには以下のような設定がされています。

1

2

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の知識及びエンジニアとしてのスキルが一段上がりましたね。

 

 以上となります、ありがとうございました。