Railsでコントローラーのアクションを強制終了させる

Railsでコントローラーのアクションを強制終了させてリダイレクトしたり何らか正常なレスポンスを返したりしたい時のやり方。

カスタムエラークラスを作り、rescue_from でキャッチしてあげれば良い。

class HogeController < ApplicationController
  class FugaError < ActionController::ActionControllerError
  end

  rescue_from FugaError do |error|
    redirect_to piyo_url, alert: error.message
  end

  def index
    do_somithing!
  end

  private

  def do_something!
    raise FugaError.new("Error!")
  end
end
カテゴリーTips