我有一个像这样的控制器
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
由于显而易见的原因,此代码将出现“重定向或仅渲染一次”错误。是否有一种优雅的方法可以在此方法中返回操作并避免对我的操作进行测试?
答案 0 :(得分: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