#はじめに
投稿した記事、イベントなどの削除後、
マイページへのredirectに戸惑ったのでメモがてら記載。
ログインユーザー=current_userとして定義されている事が前提。
#環境
Ruby 2.6.8
rails 5.2.6
#実装方法
ルーティング
resoueces :events
こうするだけで7つのアクションに対するルーティングを作成してくれます。
個別に書いてもOK。
欲しかったルーティング↓
DELETE /events/:id(.:format) events#destroy
今回は投稿したイベント情報を削除するのでeventsとしているが、Postsでもなんでも。
viewページ
<%= link_to "/events/#{@event.id}", method: :DELETE do %>
<button>イベント削除</button>
<% end %>
@eventには今閲覧してるevent情報が定義されている。
そのままDELETEを発射。
controller
def destroy
@event = Event.find(params[:id])
@event.destroy
redirect_to mypage_path(id: current_user.id)
end
(mypage_path → get 'users/:id', to: 'users#show', as: 'mypage' といったルーティングを設定してある。)
パラメーターにくっついている:idで@eventをdestroy(削除)
その後、mypage_pathにログインユーザーのidを渡してあげる。
(今回ここの記法をど忘れして手こずったので、掲載を決意した。)
直接urlを書いても良いが、
わざわざ自分でroutesに設定したpathを使いたい時、
思い出そう。