アプリケーション開発でルーティングを設定していく上で、両者の違いについて気になったので、備忘録含めてまとめていきたいと思います
resourcesメソッド
Railsの基本となるコントローラの7つのアクション名に対してのルーティングを自動で生成するメソッド!
(なんと便利な!)
postsテーブルにとっての1ツイート、usersテーブルにとっての1ユーザー、つまり、テーブルに保存されるレコード1つの情報のことをリソースと呼びます!
以下の例のような記述では、postsというリソースに対して、基本となる7つのアクションをリクエストするルーティングが設定されます。
Rails.application.routes.draw do
resources :posts
end
ターミナルにてrake routesコマンドを実行すると以下のように7つのルーティングが設定されているのが確認できます。
Prefix Verb URI Pattern Controller#Action
posts GET /posts(.:format) posts#index
POST /posts(.:format) posts#create
new_post GET /posts/new(.:format) posts#new
edit_post GET /posts/:id/edit(.:format) posts#edit
post GET /posts/:id(.:format) posts#show
PATCH /posts/:id(.:format) posts#update
PUT /posts/:id(.:format) posts#update
DELETE /posts/:id(.:format) posts#destroy
resourceメソッド
resourceメソッドは、コントローラの7つのアクションに対して、indexとid付きのパスが生成されません!
show, editアクションの実行に、idが必要ない場合に有効です!
以下の例のような記述では、postsというリソースに対して、indexとidつきパスを外した残りのアクションをリクエストするルーティングが設定されます。
Rails.application.routes.draw do
resource :posts
end
ターミナルにてrake routesコマンドを実行すると以下のように7つのルーティングが設定されているのが確認できます。
Prefix Verb URI Pattern Controller#Action
new_posts GET /posts/new(.:format) posts#new
edit_posts GET /posts/edit(.:format) posts#edit
posts GET /posts(.:format) posts#show
PATCH /posts(.:format) posts#update
PUT /posts(.:format) posts#update
DELETE /posts(.:format) posts#destroy
POST /posts(.:format) posts#create
以上となります!
場面場面によってしっかり使い分ければ、とても便利ですね!
何か気になる点等、ございましたらお気軽にコメントお願いします!
ご静聴ありがとうございました