Ruby on Rails

【Ruby on Rails】ルーティング member と collection の違い

RailsはRESTfulなルーティングが7つ(index, show, new, edit, create, update, destroy)用意されているが、それ以外のアクションを追加するときに member もしくは collection を使用する。

member ルーティングの使い方

memberルーティングは特定のリソースに対するアクションを追加するときに使用する
つまり、id が含まれるルーティングを追加したいときに使う

resources :events do
  member do
    get 'preview'
  end
end

上記設定をすると、/events/1/preview を Railsが認識し、リクエストをEventsコントローラのpreviewアクションにルーティングし、リソースid値をparams[:id]に渡してくれる

collectionルーティングの使い方

collectionルーティングは一覧リソースに対するアクションを追加するときに使用する
つまり、id が含まれないルーティングを追加したいときに使う

resources :events do
  member do
    get 'search'
  end
end

上記設定をすると、events/search を Railsが認識し、リクエストをEventsコントローラのsearchアクションにルーティングしてくれる

-Ruby on Rails