このページの内容は以下のリポジトリに1日遅れで反映されます(記事執筆前に前日分をコミットしています)。
https://github.com/hkob/hkob_blog
はじめに
Rails Tips の 65 回目です。Comment モデルを追加したので、それに対するルーティングを設定します。
8.3 コメントへのルーティングを追加する
Rails ガイドでは、コメントを追加するコントローラのためのルーティングを追加します。ガイドではフラットなコントローラを使っていますが、ルーティングだけでなくコントローラもネストしたものにしようと思います。そのために controller を設定しています。
Rails.application.routes.draw do # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html # Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500. # Can be used by load balancers and uptime monitors to verify that the app is live. get "up" => "rails/health#show", as: :rails_health_check # Defines the root path route ("/") # root "posts#index" root "articles#index" resources :articles do resources :comments, controller: "articles/comments" end end
bin/rails routes
を確認すると以下のようになりました(該当箇所と余計なスペースを削除しています)。ガイドでは単に comments#index
のようになっていましたが、articles namespace 内の comments#index
になっています。今回の場合は、ネストの親が一つに限定されますが、複数の関連を持つモデルだと、ネスト元が別になることもあります。そのことも踏まえて普段からネストしたルーティングを記述するようにした方がいいと考えています。
article_comments GET /articles/:article_id/comments(.:format) articles/comments#index POST /articles/:article_id/comments(.:format) articles/comments#create new_article_comment GET /articles/:article_id/comments/new(.:format) articles/comments#new edit_article_comment GET /articles/:article_id/comments/:id/edit(.:format) articles/comments#edit article_comment GET /articles/:article_id/comments/:id(.:format) articles/comments#show PATCH /articles/:article_id/comments/:id(.:format) articles/comments#update PUT /articles/:article_id/comments/:id(.:format) articles/comments#update DELETE /articles/:article_id/comments/:id(.:format) articles/comments#destroy
おわりに
今日は座談会で時間がなかったので、ここまでにしておきます。明日は controller の作成とテストの雛形を作るところから再開します。