Rails

【Rails基礎】ルーティングを確認できる「rails routesコマンド」の使い方を初心者向けに解説

Rails

 

今回は、ルーティングが正しく設定されているか確認できるコマンド「rake routes」について簡単に解説したいと思います。

よし
よし
Railsでアプリを作る上で、必ず使うと言っても過言じゃないコマンドだよ!

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

 

よし
よし
updateアクションには、PUTとPATCHの両方が定義されているね!

 

 

今回は、ルーティングが正しく設定されているか、どのようにコントローラーに処理を渡しているのかが確認できるコマンド「rake routes」について簡単に解説しました。

リンクを作成したい時などにも活躍するコマンドなので、ぜひこの機会に整理しておきましょう。