destroy_lotfp ヘルパー : 小林研 Rails Tips (39)

はじめに

Rails Tips の 39 回目です。昨日の lotfp を使うことで、システム内のほとんどのリンクを簡単に記述できるようになりました。ただ、destroy のリンクの場合には、ほとんどの箇所で確認を求める confirm を記述しています。これを毎回記述するのも面倒なので、destroy のものについては、専用の destroy_lotfp ヘルパーを作成しました。

destroy_lotfp の使い方

昨日紹介したイベントの削除はパスとクラスを渡すだけです。

= destroy_lotfp teacher_event_path(event), Event

lotfp と同様に locales に登録しているものと異なるリンクタイトルにしたい場合には title を指定します。

= destroy_lotfp teacher_event_detail_path(event_detail), EventDetail, title: "解除"

destroy_lotfp の実装

destroy_lotfplotfpmethoddelete になり、デフォルトで以前紹介した confirm_destroy で作成した確認メッセージを追加しているだけです。confirm_destroy がモデルクラスからメッセージを作成するため、destroy_lotfp もモデルクラスを引数に取っています。

  # @param [String] path path 名
  # @param [Class] model モデルクラス
  # @param [String, nil] title タイトル
  # @param [Hash] option 追加オプション
  def destroy_lotfp(path, model, title: nil, option: {})
    lotfp path, :delete, title: title, option: option.merge(confirm_destroy(model))
  end

おわりに

destroy_lotfp のおかげで、確認のメッセージを出し忘れることがなくなりました。こちらも過去のリンクをこれに書き換えをしているところです。