テクノロジー
2017年12月12日ルーティングの仕組み
この記事では、受け取ったリクエストを元に、コントローラのどのアクションに処理を飛ばすかを決定するルーティングの解説をしていきます。
ルーティングの仕組み
この記事では、受け取ったリクエストを元に、コントローラのどのアクションに処理を飛ばすかを決定するルーティングの解説をしていきます。
Webアプリケーションの処理の流れをイメージする上で非常に重要な知識ですので、ぜひご理解を深めてください。
ルータ
ルータは受け取ったリクエストをもとに、コントローラ&アクションを案内する役割を持っています。
言い換えるとコントローラ&アクションまでの 経路を案内
するので、 ルータ
と呼ばれているのです。
ルーティングとは
リクエストは URL
+ HTTPメソッド
の組み合わせで成り立っていることはすでに学習しました。
ルーティングとは受け取ったリクエストをもとに、コントローラ&アクションを案内することです。
7つの基本アクション
Webアプリケーションは複雑な処理を除き、 7つの基本アクション
で表現することができます。
アクション名 | 意味 | HTTPメソッド | URL |
---|---|---|---|
index | 一覧 | GET | /blogs |
show | 詳細 | GET | /blogs/:id |
new | 新規 | GET | /blogs/new |
edit | 編集 | GET | /blogs/:id/edit |
create | 作成 | POST | /blogs |
update | 更新 | PATCH | /blogs/:id |
destroy | 削除 | DELETE | /blogs/:id |
:id
にはレコードのid(1とか2とか)が入ります。
ルーティングの記述
ルーティングを記述するファイルは config/routes.rb
です。
記述方法ですが、2通り存在します。
- 1個ずつ記述していく
- resourcesオプションを使用する
まずは前者から説明していきます。
左側に HTTPメソッド + URL
、右側に コントローラ名#アクション名
を記述します。
ちなみに以下は7つの基本アクションを全て定義した時の記述です。
(config/routes.rb
)
Rails.application.routes.draw do
get '/blogs' => 'blogs#index'
post '/blogs' => 'blogs#create'
get '/blogs/new' => 'blogs#new'
get '/blogs/:id/edit' => 'blogs#edit'
get '/blogs/:id' => 'blogs#show'
patch '/blogs/:id' => 'blogs#update'
delete '/blogs/:id' => 'blogs#destroy'
end
2つ目は resourcesオプション
を使って記述する方法です。
(config/routes.rb
)
Rails.application.routes.draw do
resources :blogs
end
この記述は前者の7行分と全く同じ意味になります。
Webアプリケーションの開発においては、基本的に resourcesオプション
を使ってルーティングを定義していきます。
ルーティングの確認
ルーティングを確認するコマンドを以下に示します。ここでは例として、achieveというアプリを使っています。
(コンソール
)
~/workspace/achieve $ rake routes
ルーティングの絞り込み
さらに |grep
というオプションをつけることで、ルーティングを絞り込んで検索することができます。
(コンソール
)
~/workspace/achieve $ rake routes |grep blog
このようにすることで、achieveの中のblogに関連したルーティングだけを表示させることができます。
最初の段階ではまだ意識しなくて良いのですが、大規模な案件になった時にルーティングの数は 500個
を超えたりするそうです。
これに対して|grepオプションをつけてあげないと、表示するのに時間がかかってしまいますし、表示されても見づらいでしょう。
今のうちから|grepオプションをつけてコマンドを実行することをオススメします。