ルーティング周辺の理解

初めに、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にやってもらうよと宣言しているような感じ