rails有break语句吗?
我正在写一个控制器,它有一些非常复杂的IF语句。总之,我想要做的事情是这样的:
如果!所有这些变量都存在,并且不是空的?中断,不要继续,因为有些地方出了问题
如果XXX = 'adsasd做所有这些事情,如果
否则发送错误电子邮件
有可能休息一下吗?
发布于 2010-11-23 11:08:24
我不知道您的所有变量何时都可用,但当我想在控制器中进行检查时,我通常使用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不是nil,那么该方法将结束而不执行任何操作,然后控制器将像往常一样调用动作显示。
因此,您想要预先检查的所有内容都可以放在不同的before_filter回调中。如果你不想检查控制器中的所有动作,可以这样指定:
class YourController
before_filter :first_check, :only => [:index, :show]
before_filter :second_check, :only => [:show, :edit]在我看来,这是一种"rails“方式。
发布于 2010-11-23 10:51:03
Ruby的return语句就是您要找的。然而..。
我正在写一个控制器,它有一些非常复杂的IF语句
在不了解您的应用程序的任何其他信息的情况下,这是一个大危险信号。控制器不是有一堆复杂逻辑的地方。如果您正在使用RESTful设计模式(很少有理由不这样做),那么您的控制器应该是非常轻量级的,并且几乎不包含任何逻辑。模型是您的业务逻辑的归宿。它们允许您隔离逻辑,从而简化您的应用程序并使其更易于测试。
https://stackoverflow.com/questions/4252115
复制相似问题