0
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.

railsで簡単にCRUD処理ができるようになる(コントローラー編)

Posted at

railsで簡単にCRUD処理ができるようになる(コントローラー編)

このhogeもしくはhogesを任意の名前(taskでもboardでもなんでもいい)に変えるだけで、CRUD処理実装におけるコントローラーがマルっと解決する。

hogeもしくはhogesは、userと一対多(user:hoge = 1 : N )の関係にあるものとする。

class HogesController < ApplicationController
  before_action :set_hoge, only: %i[edit update destroy index show]

  def index
    //全件表示
    @hoges = Hoge.all
  end

  def show
    //投稿されたものの詳細を表示
    @hoge = Hoge.find(params[:id])
  end

  def new
    //新しくインスタンス(投稿する記事など)を作成
    @hoge = Hoge.new
  end

  def create
    //form_withで作成した新しいデータ(hoge_paramsにストロングパラメータとして格納されている。)がpostされてきた
    //新しいデータなので、updateではなくてcreateアクションで処理する。
    @hoge = current_user.hoges.build(hoge_params)

    if @hoge.save
      redirect_to @hoge, success: t('defaults.message.created', item: Hoge.model_name.human)
    else
      flash.now[:danger] = t('defaults.message.not_created', item: Hoge.model_name.human)
      render :new
    end
  end

  #  current_userの編集削除ボタンの表示
  def edit; end

  def update
    //form_withからすでに存在しているデータ(パスからidを受け取ってeditする。)がpostされてきた
    // updateで処理を開始する。
    if @hoge.update(hoge_params)
      redirect_to hoge_path(@hoge), success: t('defaults.message.updated', item: Hoge.model_name.human)
    else
      flash.now[:danger] = t('defaults.message.not_updated', item: Hoge.model_name.human)
      render :edit
    end
  end

  def destroy
    @hoge.destroy!
    redirect_to hoges_path, success: t('defaults.message.deleted', item:Hoge.model_name.human)
  end

  private

  def set_hoge
    @hoge = current_user.hoges.find(params[:id])
  end

  def hoge_params
    params.require(:hoge).permit(:title, :body, :category)
  end
end
0
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
0
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?