首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails - Break语句?

Rails - Break语句?
EN

Stack Overflow用户
提问于 2010-11-23 10:12:28
回答 2查看 2.7K关注 0票数 0

rails有break语句吗?

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

如果!所有这些变量都存在,并且不是空的?中断,不要继续,因为有些地方出了问题

如果XXX = 'adsasd做所有这些事情,如果

否则发送错误电子邮件

有可能休息一下吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-23 11:08:24

我不知道您的所有变量何时都可用,但当我想在控制器中进行检查时,我通常使用before_filter回调来完成。例如:

代码语言:javascript
复制
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回调中。如果你不想检查控制器中的所有动作,可以这样指定:

代码语言:javascript
复制
class YourController
  before_filter :first_check,  :only => [:index, :show]
  before_filter :second_check, :only => [:show, :edit]

在我看来,这是一种"rails“方式。

票数 3
EN

Stack Overflow用户

发布于 2010-11-23 10:51:03

Ruby的return语句就是您要找的。然而..。

我正在写一个控制器,它有一些非常复杂的IF语句

在不了解您的应用程序的任何其他信息的情况下,这是一个危险信号。控制器不是有一堆复杂逻辑的地方。如果您正在使用RESTful设计模式(很少有理由不这样做),那么您的控制器应该是非常轻量级的,并且几乎不包含任何逻辑。模型是您的业务逻辑的归宿。它们允许您隔离逻辑,从而简化您的应用程序并使其更易于测试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4252115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档