🌟
ルーティング
はじめに
アプルケーション詳細設計を書き直している段階で、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