2013-10-07 14 views
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

你真的不能強迫你的方法的調用者做任何事,但你可以通知它你希望它表現:

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 
+0

我希望我能找到一個方法'stop_executing_action'或在軌道內的東西...你知道這樣的事嗎? – fotanus

+1

如果你的過濾器調用返回'false',那麼執行將停止。 – tadman