#はじめに
Rails6.0のルーティングのパス名 resouces resourceなどを忘備録を兼ねてまとめます。
#明示的なルーティング指定
# ルートへアクセスするルーティング
root 'users#show'
root to 'users#show'
root '/', to: 'users#show'
# '/users/:id'でusersコントローラのshowアクションにルーティング
get '/users/:id', to: 'users#show'
# 'hoge'でusersコントローラのshowにルーティング
# as:オプションを使うとルーティングに名前を指定可能
get '/users/:id', to: 'users#show', as: 'hoge'
<%= form_with %><%= link_to %>などでurlを指定する際に、直接/posts/:idなどのurlのように指定可能ですが、変更の際に修正箇所が多くなり得策ではありません。
as:で名前を付けることで、修正しやすくなり、コードも読みやすくなります。
#resourcesとresouceの違い
resources(複数)...7つのアクションがid付きで生成されます。
resource(単数) ...indexアクションを除いた6つのアクションがidなしで生成されます。
「写真」「ユーザー」「商品」のようにアプリケーションに複数存在する場合はresources(複数)
「自身のプロフィール」のように一つしか存在せず、idやindexが必要ない場合はresource(単数)
##resources(複数)
resources :photos
のような記述で、以下の7つのルーティングが生成されます。この場合、いずれもPhotosコントローラに対応します。
動詞 | パス | コントローラ#アクション | 目的 |
---|---|---|---|
GET | /photos | photos#index | すべての写真の一覧を表示 |
GET | /photos/new | photos#new | 写真を1つ作成するためのHTMLフォームを返す |
POST | /photos | photos#create | 写真を1つ作成する |
GET | /photos/:id | photos#show | 特定の写真を表示する |
GET | /photos/:id/edit | photos#edit | 写真編集用のHTMLフォームを1つ返す |
PATCH/PUT | /photos/:id | photos#update | 特定の写真を更新する |
DELETE | /photos/:id | photos#destroy | 特定の写真を削除する |
##resource(単数)
resource :geocoder
以上の記述で以下の6つのルーティングが生成されます。この場合、いずれもgeocoderに対応します。
動詞 | パス | コントローラ#アクション | 目的 |
---|---|---|---|
GET | /geocoder/new | geocoders#new | geocoder作成用のHTMLフォームを返す |
POST | /geocoder | geocoders#create | geocoderを作成する |
GET | /geocoder | geocoders#show | 1つしかないgeocoderリソースを表示する |
GET | /geocoder/edit | geocoders#edit | geocoder編集用のHTMLフォームを返す |
PATCH/PUT | /geocoder | geocoders#update | 1つしかないgeocoderリソースを更新する |
DELETE | /geocoder | geocoders#destroy | geocoderリソースを削除する |
###注意点
Railsのルーティングはルーティングファイルの上から順に実行します。そのため、同じ条件のルーティングが複数存在する場合、上のルーティングのみ有効になります。なお、無関係なURLの場合は順番は関係ありません。
#参考
Railsのルーティング - Railsガイド v6.0
https://railsguides.jp/routing.html