🌟

ルーティング

2024/02/03に公開

はじめに

アプルケーション詳細設計を書き直している段階で、URL?ルーティング?
ここらの記述って何表してたっけ?となったので書いていきたいと思います。

コード

get "profile/:user_id/report/new" => "reports#new", as: "profile_reports_new"

このルーティングの設定は、/profile/:user_id/report/newのURLにアクセスされた際に、ReportsControllerのnewアクションを呼び出すようになっています。また、このルートにはprofile_reports_newという名前も割り当てられています。

このルーティングの意味は以下の通りです:

  • get: HTTPメソッドがGETであることを示します。
  • /profile/:user_id/report/new: パスの一部が動的で、:user_idはワイルドカードとして、実際のリクエスト時に指定された値として受け取ります。例えば、/profile/123/report/newなど。
  • => "reports#new": 上記のパスに対応するアクションがReportsControllerのnewアクションであることを指定しています。
  • as: "profile_reports_new": このルートに名前を割り当てており、profile_reports_new_pathやprofile_reports_new_urlといったヘルパーメソッドが生成されます。
    これにより、コントローラのReportsControllerのnewアクションで、特定のユーザーの新しいレポートを作成するためのフォームが表示されるでしょう。
ワイルドカード

config/routes.rbでのワイルドカードは、URLパスの一部を変数として扱うために使用されます。具体的な例を見てみましょう。

例えば、以下のようなルートがあるとします:

get "/users/:id" => "users#show", as: "user"

このルートでは、/users/:idの:idがワイルドカードです。これにより、:idの部分には任意の値が入ることができます。例えば、/users/123や/users/kenなどです。

このルートを定義することで、UsersControllerのshowアクションでユーザーの詳細ページを表示することができます。また、as: "user"により、user_pathやuser_urlといったヘルパーメソッドが生成されます。これを利用すると、コード内で動的なURLを生成するのに便利です。

例えば、user_path(123)は/users/123に対応し、user_path("ken")は/users/kenに対応します。

Discussion