ルーティング周辺の理解
初めに、resouce/resourcesとかいうやつ
resources :reviews これでユーザーコントローラーに対して7つのアクション全てをルーティングに設定してくれる index,new,create,edit,update,show,destroyを勝手に用意してくれるということ resources :reviews, only:[:create,:show]と選択することでアクションを指定してルーティングを設定することも出来る
- 記述が少なくて済む
- アクションを限定して記述することが可能
- ネストを組みやすくなる
ネスト
postに紐づいた、reviewというものを設定できる
インスタグラムのようなサービスを作っているとして、1つの投稿に複数のreviewがあります。それらのreviewを1つ1つ扱うとした時に便利になります
resources :posts, only: [:index, :new, :create, :edit, :update] do destroy resources :reviews, only: [:create, :show] end こんな感んじに書くことによって /post/post_id/review/id のような形で1つのreviewを取り出すことが出来る
doとend
ネストで記述する時に忘れてはいけないのが、doとendを忘れないこと よくありがちなのが、doはつけてもendを忘れてしまうといったもの resources :posts, only: [:index, :new, :create, :edit, :update] do destroy resources :reviews, only: [:create, :show] end
collection do
自分で作ったアクションをresourcesの中に記述したい場合、collection doを使おう!resourcesは7つのアクションしか定義されてないので自分で用意しなければならない
(/posts/searchのようにidを伴わないパス)を追加するときに使う。 resources :posts do collection do get :search end end postsコントローラーのserchアクションに対してルーティングを設定している
おまけ
root “posts#index”でWebページにアクセスしてきた時点でこのページに飛ばすという処理
root "見せたいviewファイルの場所"
devise gemを入れた際に、devise_for :usersでユーザーのログインやサインアップ機能、ログアウトなどを自動で行なってくれているコントローラーを指定している。
簡単に言うと、ユーザー周りの処理をdevise gemにやってもらうよと宣言しているような感じ