掲示板の編集、削除機能の実装
boards_controllerに追加(edit update destroy set_board)
class BoardsController < ApplicationController
beforeaction :set_board, only: [:edit, :update, :destroy]
def new
@board = Board.new
end
def create
@board = current_user.boards.build(board_params)
if @board.save
redirect_to boards_path
else
render :new
end
end
def show
@board = Board.find(params[:id])
@comment = Comment.new
@comments = @board.comments.includes(:user).order(created_at: :desc)
end
def index
@boards = Board.all.includes(:user).order(created_at: :desc)
end
def edit; end
def update
if @board,update(board_params)
redirect_to @board
else
render :edit
else
end
def destroy
@board.destroy!
redirect_to boards_path
end
private
def set_board
@board = current_user.boards.find(params[:id])
end
def board_params
params.require(:board).permit(:title, :body)
end
end
edit,update,destroyアクションはURLから他の人の掲示板を編集できないようにするためset_boardで対象のユーザーの掲示板のみ取得できるようにする
class User < ApplicationRecord
def own?(object)
object.user_id == id
end
end
current_userと掲示板を作ったuserが一緒かどうか確認
<li class="list-inline-item">
<%= link_to edit_board_path(board), id: "button-edit-#{board.id}" do %>
<p>編集</p>
<% end %>
</li>
<li class="list-inline-item">
<%= link_to board_path(board), id: "button-delete-#{board.id}",
method: :delete, data: { confirm: "削除しますか?" } do %>
<p>削除</p>
<% end %>
</li>
</ul>
編集ボタン、削除ボタンの作成
編集ボタン、削除ボタンが必要な場所に記述