在一行中合并两个if条件

时间:2014-06-09 17:22:18

标签: ruby-on-rails ruby conditional

我有一个哈希值:

request.session["flash"]["alert"]

我需要为上面的哈希值写一个if条件,如:

if request.session["flash"]
  if request.session["flash"]["alert"]
    #Do something
  end
end

我想将if条件组合在一行中,如:

if request.session["flash"] && request.session["flash"]["alert"]
  #do something
end 

但如果不存在flash,则会抛出一个nil类错误。如何在一行中写入两个if条件,如果一个条件通过则执行另一个条件?

1 个答案:

答案 0 :(得分:0)

你测试过你的第二个片段了吗?据我所知,Ruby对if条件使用惰性求值。如果第一个条件为false,则不会对第二个条件求值,因此甚至不会在nil对象上调用[]方法。

来源:http://strugglingwithruby.blogspot.com/2008/11/conditional-statements.html