2011-08-09

ActiveScaffoldで削除の時のメッセージをカスタマイズする

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
ActiveScaffoldで削除の際に出る確認メッセージをカスタマイズする方法です。 単純にメッセージを変えるのであれば以下のような感じでよいです。
config.delete.link.confirm = "削除してもいいのかい?ホントにいいのかい?"
単純な変更ならば、上記でよいのですが どうせならば何を削除するのかを、ちゃんとメッセージしたい場合は、以下のような感じになります。 例えばusersテーブルの情報を削除する場合です。 削除メッセージに削除対象のnameカラムの内容を表示するようにします。
config.delete.link.confirm = nil
config.delete.link.dhtml_confirm = UserConfirm.new
上記で指定したUserConfirmを以下のように定義します。
class UserConfirm < DHTMLConfirm
  def onclick_handler(controller, link_id)
    code = ""
    if link_id =~ /delete-([0-9]+)-link/
      name = User.find($1).name
    end
    script = <<-END
if (confirm("「#{name}」を削除していいのかい?ホントにいいのかい?")) window.gFireModalLink();
END
  end 
end
このUserConfirmクラスを app/controller/users_controller.rb のコントローラーのクラスの上にでも書いておけばOKです。 (他の場所の方がよいかもしれないですが・・・)
コメントを投稿