if_found メソッドを本格的に考えてみる
コード
def if_found(obj, msg = "デフォルトのエラーメッセージ", action = "index", controller = controller_name) if obj yield if block_given? else flash[:error] = msg redirect_to :controller => controller, :action => action end end
使い方
まずは action_controller に上のメソッドを記述します。実際の利用方法は以下のとおり。
if_found(@item = Item.find(params[:id])) do # 何らかの処理、ブロックを使わないなら do から end まで省略 end
ポイント
妙な ID が指定された場合などの処理を一括で定義可能。リダイレクト先やエラーメッセージも指定可能で、大体の場合飛ばす先はここだろうというアクションをデフォルトで指定。
自分で使う分にはこれで十分なのですが、何か改良案などあれば教えて頂きたいです。