Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在一行中组合两个if条件_Ruby On Rails_Ruby_Conditional - Fatal编程技术网

Ruby on rails 在一行中组合两个if条件

Ruby on rails 在一行中组合两个if条件,ruby-on-rails,ruby,conditional,Ruby On Rails,Ruby,Conditional,我有一个哈希值: request.session["flash"]["alert"] 我需要为上述散列值编写一个if条件,如下所示: if request.session["flash"] if request.session["flash"]["alert"] #Do something end end 我想将两个如果条件组合在一行中,如下所示: if request.session["flash"] && request.session["flash"][

我有一个哈希值:

request.session["flash"]["alert"]
我需要为上述散列值编写一个
if
条件,如下所示:

if request.session["flash"]
  if request.session["flash"]["alert"]
    #Do something
  end
end
我想将两个
如果
条件组合在一行中,如下所示:

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

但是如果
flash
不存在,这将抛出一个nil类错误。如何在一行中编写两个
if
条件,如果一个条件通过,它将执行另一个条件?

您是否测试了第二个代码段?据我所知,Ruby对if条件使用惰性求值。如果第一个条件为false,则不会计算第二个条件,因此[]方法甚至不会对nil对象调用


来源:

非常确定if request.session[“flash”]&&request.session[“flash”][“alert”]不应抛出nil类错误。。。相反,当flash不存在时,它应该计算为nil,这将被计算为false。这一行应该可以工作,如果
session['flash']
为nil
if request.session['flash'],则第二个条件永远不会运行。session['flash']。try(:[],'alert')
应该工作你是说这会引发
nil
类错误吗?或者您是说这确实引发了
nil
类错误?如果有,具体错误是什么?为什么不使用
flash[:alert]
,按您应该的方式访问flash?