🐯

【Rails】簡単な掲示板機能③

2023/11/20に公開

①②と続いてきた掲示板機能の最後になります。前回までのあらすじは下記より確認お願いします。今回は不適切な掲示板投稿を管理者側で削除する機能の復習になります。
https://zenn.dev/sudoukky/articles/74e13b61e5ab4c
https://zenn.dev/sudoukky/articles/04035ea14ffe89

前提条件

  • 管理者側でコミュニティ作成済み
  • 会員側でコミュニティごとの掲示板投稿作成済み

会員側で作成された掲示板投稿の一覧画面

ここでは、コミュニティごとに作成された投稿一覧を確認できるようにします。
簡単な掲示板機能①の際に作成した管理者側でのコミュニティ一覧画面にリンクを作成し、そこから各コミュニティの一覧に飛べるようにします。

コントローラ記述

admin側のpost_boardコントローラを作成し記述

admin/post_boards_controller
class Admin::PostBoardsController < ApplicationController
  def index
    @community = Community.find(params[:community_id])
    @post_boards = @community.post_boards
    @users = User.all
  end
  
  def destroy
    @post_board = PostBoard.find(params[:id])
    @community = @post_board.community
    @post_board.destroy
    flash[:notice] = "削除に成功しました。"
    redirect_to admin_community_post_boards_path(community_id: @community.id)
  end
  
end

@community = Community.find(params[:community_id])でそのコミュニティに関連する投稿をすべて取得し、@post_boardsに代入します。

ビューの記述

views/admin/post_boards/index.html.erb
<div class="container mt-5">
<h3><%= @community.name %>の投稿一覧</h3>
<table class="table mt-3">
  <tr>
    <th>名前</th>
    <th>投稿</th>
    <th>日時</th>
    <th></th>
  </tr>
  
  <% @post_boards.each do |post_board| %>
  <tr>
    <td><%= post_board.user.name %></td>
    <td><%= post_board.body %></td>
    <td><%= post_board.created_at.strftime("%Y年%m月%d日 %H時%M分") %></td>
    <td>
      <%= link_to '削除', admin_community_post_board_path(post_board.community_id, post_board), method: :delete, data: { confirm: '本当に削除しますか?' },class: "btn btn-sm btn-danger" %>
    </td>
  </tr>
  <% end %>

</table>
</div>

<% @post_boards.each do |post_board| %>@post_boardsに含まれる各投稿に対して、以下の行を繰り返し生成します。

  • <%= post_board.user.name %>: 投稿したユーザーの名前を表示
  • <%= post_board.body %>: 投稿の内容を表示
  • <%= post_board.created_at.strftime("%Y年%m月%d日 %H時%M分") %>: 投稿された日時を表示
  • <%= link_to '削除', admin_community_post_board_path(post_board.community_id, post_board), method: :delete, data: { confirm: '本当に削除しますか?' },class: "btn btn-sm btn-danger" %>: 投稿を削除するためのリンクになります。


ここのページで、各コミュニティごとの掲示板投稿を管理し、不適切な発言があれば管理者側で削除することができます。

感想

全体を通して3つの記事に分ける長編にはなりましたが、初学者が最初の1か月目で行った基礎を何個も重ねたことでできる機能でした。
今回は居酒屋のホームページ内に作成する掲示板ということもあり、変なコミュニティを会員側でいくつも作成し風紀を乱されることへの防御策として管理者側でコミュニティを作成するものでした。
作る前は「掲示板とかむずかしそう~」と思いましたが、実際は簡単な機能の結びつけ合いで、初学者でも工夫次第でいろいろ作成することができるものだな~と改めて答えは1つではないことと可能性を感じた製作となりました。何かを真似たりじゃなくて、初めて自分なりに考えた機能だったのでちょっと楽しかったです笑

Discussion