destroyアクションで記事を削除する
前回までにRailsで記事削除・作成・更新を行ってきましたが、今回はdestroyアクションでRESTfulに記事データを削除します。
連載: Rails4でRESTfulアプリケーションの7アクション+αを作る
記事削除機能のルーティング設定
まずはroutes.rbでdestroyアクションのルーティング設定を行います。
# config/routes.rb
namespace :blog do
resources :posts, only: [:destroy]
end
と設定します。
設定してからルーティング情報を出力すると
$ rake routes
blog_post DELETE /blog/posts/:id(.:format) blog/posts#destroy
となります。
確認すると
- Prefixは
blog_post
で、blog_post_path(blog_post.id)
といったヘルパーでパスを取得できる /blog/posts/:id(.:format)
へのDELETE
リクエストでアクセスできるblog_posts
コントローラのdestroy
アクションを実行する
ということがわかります。
記事削除機能のコントローラ
コントローラではdestroyアクションを実装します。
destroyアクションでは指定されたidの記事を削除します。
# app/controllers/blog/posts_controller.rb
before_action :set_blog_post, only: [:destroy]
def destroy
if @post.delete
flash[:success] = "deleted"
end
redirect_to blog_posts_path
end
private
def set_blog_post
@post = Blog::Post.find(params[:id])
end
記事削除機能のビュー
destroyアクションでもcreateアクションとupdateアクション同様にビューは用意しておらず、削除に成功しても失敗しても記事一覧にリダイレクトするようにしています。
今回でRails4でのRESTfulな記事管理機能の実装はおしまいです。
ひとつひとつはそれほど難しいことではないので、よく理解してRESTfulなシステムを作っていきましょう。