0

このようなコントローラーがあります

MyController < ApplicationController

def my_method
  validate(params[:name].blank?, "Name can't be blank")
end
private

def validate(condition, msg)
  if condition
    flash[:notice] = msg
    redirect_to :back
    return
  end
end

このコードには、明らかな理由から、「リダイレクトまたはレンダリングは 1 回のみ」というエラーが発生します。このメソッド内からアクションを返し、アクションのテストを回避するエレガントな方法はありますか?

4

1 に答える 1

1

メソッドの呼び出し元に何かを強制することはできませんが、どのように動作させたいかを伝えることはできます。

def my_method
  return unless validate(params[:name].blank?, "Name can't be blank")
end

def validate(condition, msg)
  return true unless condition

  flash[:notice] = msg
  redirect_to :back
  return false
end
于 2013-10-07T21:06:20.007 に答える