2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

掲示板の削除と編集

Posted at

備忘録です!

#boardコントローラーの追加

boards_controller.rb
def edit
  @board = current_user.boards.find(params[:id])

def update
  @board = current_user.boards.find(params[:id])
  if @board.update(board_params)
      redirect_to board_path(params[:id]), success: t('defaults.message.edited', item: Board.model_name.human)
  else
      flash.now['danger'] = t('defaults.message.not_edited', item: Board.model_name.human)
      render :edit
  end
end

def delete
  @board = current_user.boards.find(params[:id])
  @board.destroy!
  redirect_to boards_path, success: t('defaults.message.deleted', item: Board.model_name.human)

今回は、他人の作成した掲示板の編集ページにアクセスした場合は404エラー(ActiveRecord::RecordNotFound)となるように実装したい.

@board = Board.find(params[:id])

とすると、全てのboardのから情報を取得できてしまう。
なので、

@board = current_user.boards.find(params[:id])

current_userを用いることで、現在ログインしているユーザーが所有しているboardのみからしか情報を取得できないため、自分の投稿でない場合、ページに転移することも、編集することも、削除することもできない。

##HTMLのdata属性

データを削除するときに、「本当に削除してよろしいですか?」質問され、「はい」というボタンを押したら削除できるように実装していきます。

<%= link_to 'リンク', ○○_path, data: { confirm: 'ダイアログで表示させるメッセージ' } %>

こちらでダイアログを出せるので、今回は、

<%= link_to board_path(board.id), id: "button-delete-#{board.id}", method: :delete, data: {confirm: '本当に削除してもよろしいです'} do %>
  <%= icon 'fas', 'trash' %>
<% end %>

とします。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?