Rails / Ruby

連載: 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

となります。

確認すると

  1. Prefixはblog_postで、blog_post_path(blog_post.id)といったヘルパーでパスを取得できる
  2. /blog/posts/:id(.:format)へのDELETEリクエストでアクセスできる
  3. 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なシステムを作っていきましょう。

関連記事