軌道是否有斷言?Rails - Break語句?
我在寫一個控制器,它有一些非常複雜的IF語句。總之,我想要做的是這樣的:
如果!所有這些變量存在,不是零? BREAK,並且不要繼續BEC出事了 END
如果XXX =「adsasd 做這一切的東西 ELSE IF
ELSE 發出一個錯誤的電子郵件
是一個打破可能嗎?
軌道是否有斷言?Rails - Break語句?
我在寫一個控制器,它有一些非常複雜的IF語句。總之,我想要做的是這樣的:
如果!所有這些變量存在,不是零? BREAK,並且不要繼續BEC出事了 END
如果XXX =「adsasd 做這一切的東西 ELSE IF
ELSE 發出一個錯誤的電子郵件
是一個打破可能嗎?
我不知道什麼時候所有變量都可用,但是當我想在控制器中執行檢查時,我通常會使用before_filter回調來執行此操作。例如:
class YourController
before_filter :check_if_variables_exist
def show
#prepare for render view
end
private
def check_if_variables_exist
unless @your_variable.nil?
#Do what you want
render :nothing => true
end
end
這裏做的事情是,當一個請求到達動作展現在YourController,它首先會調用私有方法check_if_variables_exist。如果@your_variable是零而不是結束於render:nothing => true並且filter_chain將被暫停,並且動作顯示將永遠不會被調用。但是,如果your_variable不是零,那麼該方法將不做任何事情而結束,然後控制器將像往常一樣調用動作表演。
因此,您希望事先檢查的所有內容都可以放在不同的before_filter回調函數中。如果你不想在控制器的所有動作的檢查,可以這樣規定:
class YourController
before_filter :first_check, :only => [:index, :show]
before_filter :second_check, :only => [:show, :edit]
在我看來,這是「鐵軌」的方式來做到這一點。
這是一個非常乾淨的主意!我真的很喜歡那樣。謝謝 – AnApprentice 2010-11-23 04:52:22
Ruby的return
聲明是您正在尋找的。然而...
我正在寫有一些很複雜的IF語句
不知道什麼對你的應用程序,這是一個BIG紅旗的控制器。控制器不是擁有一堆複雜邏輯的地方。如果您使用的是RESTful設計模式(並且很少有其他原因),那麼您的控制器應該非常輕量級,並且幾乎不包含任何邏輯。模型是您的業務邏輯所屬的地方。它們允許您分離邏輯,簡化應用程序並使其更易於測試。
@Alex呈現與返回不同,並且不會退出當前方法。 – 2010-11-23 02:45:52