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']
为nilif request.session['flash'],则第二个条件永远不会运行。session['flash']。try(:[],'alert')
应该工作你是说这会引发nil
类错误吗?或者您是说这确实引发了nil
类错误?如果有,具体错误是什么?为什么不使用flash[:alert]
,按您应该的方式访问flash?