削除機能を追加する
今日は削除機能を実装していきます。まずは削除リクエストを送るためのボタンを作成します。場所はedit.html.erb
です。
<h2>Edit</h2>
<%= render "form" %>
<%= link_to "Delete", idea_path(@idea.id), method: :delete %>
<%= link_to "Back", ideas_path %>
第一引数にアンカーテキスト、第二引数にリンク先URL、第三引数はオプションでキーを渡してHTMLメソッドを指定します。※公式リファレンス
destroyアクションを追加する
ideas_controller.rb
からdestroyアクションを追加します。
class IdeasController < ApplicationController
def index
@ideas = Idea.all
end
def show
end
def new
@idea = Idea.new
end
def create
@idea = Idea.new(idea_params)
if @idea.save
redirect_to ideas_path, notice: 'Success!'
else
flash[:alert] = 'Save error!'
render :new
end
end
def edit
@idea = find_idea_by_id
end
def update
@idea = find_idea_by_id
@idea.update(idea_params)
redirect_to ideas_path
end
def destroy
end
private
def idea_params
params.require(:idea).permit(:title, :content)
end
def find_idea_by_id
Idea.find(params[:id])
end
end
次にdestoryアクション内の処理を追加していきます。
def destroy
@idea = find_idea_by_id
@idea.destroy
redirect_to ideas_path
end
この記述でテーブルから該当の一行を削除することが可能です。最後に一覧画面へリダイレクトできるようにしてます。
ダイアログを表示させる
削除画面から登録データを削除する際に確認のダイアログを表示させてよりウェブサービスっぽさを出してみたいと思います。
<%= link_to "Delete", idea_path(@idea.id), method: :delete, data: {confirm: "Are you sure to delete the post?"} %>
確認のダイアログを表示するには{confirm: "Are you sure to delete the post?"}
と書くだけでダイアログ用のjavascriptを出力できます。
まとめ
子でCRUDで必要な一通りの機能の実装ができました。正直今回のアプリは簡単なのでこれくらいで十分かなと思います。明日からはbootstrapの使い方に進んでいこうと思います。あと、余った時間で必要なアクションがないか再度確認をしていきます。