今回は、ルーティングが正しく設定されているか確認できるコマンド「rake routes」について簡単に解説したいと思います。
rake routesコマンドとは
rake routesコマンドとは、routes.rbで記述したルーティングをターミナルで確認することができるコマンドです。
出力結果には4つの項目があり、それぞれ「Prefix」「Verb」「URI Pattern」 「Controller#Action」と書かれています。
実際にrake routesしてみると、以下のように表示されることが分かると思います。
Prefix Verb URI Pattern Controller#Action
tweets GET /tweets(.:format) tweets#index
それでは、4つの項目を具体的に見ていきましょう。
Prefix
パスが入った変数のようなものです。
Prefixをパスとして使いたい場合は、末尾に「_path」を追記します。
使い方としては、以下の通りです。
<%= link_to "詳細", tweets_path('tweetのidが入ったインスタンス') %>
Prefixの箇所をURI(URL)で指定すると、次のようになります。
<%= link_to '詳細', "/tweets/#{tweet.id}" %>
Verb
HTTPメソッドを表します。
具体的には、URI Patternのパスにどのhttpリクエストでアクセスするかを示しています。
それぞれのHTTPメソッドを見ていきましょう。
- get:リソースの取得。単にウェブサイトを閲覧する際に使用します。
- post:リソースの保存。情報を登録する際に、サーバーに情報を送信するために使用します。
- delete:リソースの削除。アカウント削除の際に、サーバー内のデータを削除するために使用します。
- patch:リソースの更新。登録情報の更新の際に、サーバー内のデータを更新するために使用します。
- put:patchと同じ。Rails3まではputを使用していましたが、Rails4からpatchが推奨されています。
URI Pattern
ルーティングのパスを表します。
このパスにアクセスされた際に、指定のコントローラとアクションで処理が行われます。
Controller#Action
httpリクエストでパスが送られた際に、処理が行われるコントローラとアクションを表しています。
例えば、tweets#indexと書かれていれば、tweetsコントローラーのindexアクションという意味です。
使い道
rake routesコマンドは、主にルーティングでresourcesメソッドを用いて定義した際に使用します。
resourcesメソッドは、自動で7つのアクション(index, show, new, create, edit, update, destroy)をルーティングで定義してくれる、便利なメソッドです。
では、実際にやってみましょう。
ルーティングファイル(routes.rb)を、以下のように設定しました。
Rails.application.routes.draw do
resources :tweets
end
ではここで、ターミナルでrake routesコマンドを入力しましょう。
このような出力結果になっているはずです。
Prefix Verb URI Pattern Controller#Action
tweets GET /tweets(.:format) tweets#index
POST /tweets(.:format) tweets#create
new_tweet GET /tweets/new(.:format) tweets#new
edit_tweet GET /tweets/:id/edit(.:format) tweets#edit
tweet GET /tweets/:id(.:format) tweets#show
PATCH /tweets/:id(.:format) tweets#update
PUT /tweets/:id(.:format) tweets#update
DELETE /tweets/:id(.:format) tweets#destroy
今回は、ルーティングが正しく設定されているか、どのようにコントローラーに処理を渡しているのかが確認できるコマンド「rake routes」について簡単に解説しました。
リンクを作成したい時などにも活躍するコマンドなので、ぜひこの機会に整理しておきましょう。