🐥

Rails学習 自前のルーティング設定

2024/12/30に公開

ここからが本文です
今回はZennに正しく投稿できるか確認のテスト記事です。--

アクション内容が異なるdestroyアクションを追加したい時・・・

Webサイトで画像の削除のルーティングを設定する場合,Railsはroutesを設定しておけば、
自動的にdestroyアクションを設定してくれる。
しかし、同じページに2枚の画像を表示してあり、それぞれに削除ボタンを設定したい場合は
routesで設定されているdestroyアクションでは数が足りない。
こういったケースではcollection/memberブロックをルーティングファイルに設定することで
独自のアクションを追加することができる。

resources: posts do
  collection do
  destroy :purge_main_photo
  end
  member do
  destroy :purge_sub_photo
  end
end

なお、collectionは単一リソース、memberは複数のリソースを扱うアクションを追加できる。
上記のケースであれば、rails routesで以下のルーティングが設定される。
ちゃんとヘルパーメソッドも追加される。

purge_main_photo DELETE /posts/purge_main_photo(.:format)
purge_sub_photo DELETE /posts/:id/purge_sub_photo(.:format)

後はpostコントローラーでアクションを設定すれば複数のdeleteを設定できる!!

GitHubで編集を提案

Discussion