rails是否有break语句?
我正在编写一个具有一些非常复杂的IF语句的控制器。总之,我想做的是这样的事情:
IF!所有这些变量都存在并且不是零吗? BREAK并且不要继续因为出了问题 END
如果XXX ='adsasd 做所有这些 如果
ELSE 发出错误电子邮件
可能休息吗?
答案 0 :(得分:3)
我不知道你的所有变量何时可用,但是当我想在控制器中进行检查时,我通常使用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为零,则它最终会在渲染时结束:nothing =>如果为true,则filter_chain将暂停,并且将永远不会调用action show。但是如果your_variable不是nil,那么该方法将结束而不做任何事情,然后控制器将像往常一样调用动作节目。
因此,您想要事先检查的所有内容都可以放在不同的before_filter回调中。如果您不想检查Controller中的所有操作,可以像这样指定:
class YourController
before_filter :first_check, :only => [:index, :show]
before_filter :second_check, :only => [:show, :edit]
在我看来,这是“轨道”的方式。
答案 1 :(得分:1)
Ruby的return
语句是您正在寻找的。然而...
我正在编写一个具有一些非常复杂的IF语句的控制器
在不知道有关您的应用程序的任何其他内容的情况下,这是一个 BIG 红旗。控制器不是拥有一堆复杂逻辑的地方。如果您正在使用RESTful设计模式(并且很少有理由不这样做),那么您的控制器应该非常轻量级并且几乎不包含任何逻辑。模型是您的业务逻辑所属的位置。它们允许您隔离逻辑,简化应用程序并使其更容易测试。