Rails – 掲示板 – 投稿の削除

 

ルーティング

postsについてはresourcesで設定したため、削除用のルーティングも自動生成されている。

  • DELETEメソッド
  • URLは"/posts/:id"
  • コントローラーとアクションはposts#destroy
  • Prefixはpost(post_path)

ビュー

トップの投稿一覧中、削除アイコンのリンク先を設定する。

/posts/:id → post_path(post)

また、メソッドをdeleteで指定する。

top.html.erb

posts#destroyアクション

destroyアクションにデータの削除処理を記述。

  • params[:id]でURLパラメータの:idを取得
  • このidを使ってデータベースからPostデータを取得
  • Postデータ→PostImageデータから画像ファイルのパスを取得してファイルを削除
  • 取得したPostデータをdestroy(Postとそれに従属するPostImagesが連動して削除される)

なお、ブラウザー側でpointer-eventsが効かない場合も考慮して、DBから取得したPostuser_idとセッション中のユーザーのidが一致する場合のみ削除している。

また、画像ファイルのフルパスを得るためのヘルパーを別に準備している。

post_image_pathヘルパー

画像ファイルのオブジェクトpost_imageを与えて画像ファイルのフルパスを返すヘルパー。

もう一つのpost_image_urlはビューで使用するもので、それぞれパスの表現が違う。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です