※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。
memberとcollectionとは
railsには定番のアクションがある
定番のアクション7種類
new、create、index、show、edit、updata、destroy
この定番7種類のほかにアクションを追加したいとき、member
やcollection
を使う
resources :photos do
member do
get 'preview'
end
end
/photos/1、/photos、/photos/1/previewのようにurlの種類が増える
例)routes.rbで「like
」について以下のように書き換えてみる
resources :articles do
resources :comments, only: [:index, :new, :create]
member do
post 'like'
end
like_article_path(postリクエスト) → articles#showだったのが、articles#likeに変わる
resources :photos do
collection do
get 'search
end
end
/photos/1、/photos、/photos/searchのようにurlの種類が増える
memberとの違いは、idを指定しないとき「/photos/search」のようになる
search
の場合、photos全体からsearch
するので、id
がないのは自然なことと言える
このケースだと、member
じゃなくcollection
を使うのが◎
例)profileにpublish(公開)アクションを作るとする
resource :profile, only: [:show, :edit, :update] do
collection do
post 'publish'
end
end
publish_profile_path → profiles#publishが出来上がる
ただrailsにおいては、定番の7種類のみ使うほうがわかりやすくまとまる(RESTfulという考え方)
#DAY12