Rails - 休息声明?

时间:2010-11-23 02:12:28

标签: ruby-on-rails

rails是否有break语句?

我正在编写一个具有一些非常复杂的IF语句的控制器。总之,我想做的是这样的事情:

IF!所有这些变量都存在并且不是零吗?   BREAK并且不要继续因为出了问题 END

如果XXX ='adsasd  做所有这些 如果

ELSE  发出错误电子邮件

可能休息吗?

2 个答案:

答案 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设计模式(并且很少有理由不这样做),那么您的控制器应该非常轻量级并且几乎不包含任何逻辑。模型是您的业务逻辑所属的位置。它们允许您隔离逻辑,简化应用程序并使其更容易测试。