Ruby on rails 新手rails问题:处理.each循环中零值的优雅方法?
目前只是在干预Rails,并努力找出如何避免“当你没有预料到它时,你有一个nil对象”的错误。目前,我用一条“除非对象为零”的消息来逃避他们,但这条消息变得非常丑陋。例如:Ruby on rails 新手rails问题:处理.each循环中零值的优雅方法?,ruby-on-rails,Ruby On Rails,目前只是在干预Rails,并努力找出如何避免“当你没有预料到它时,你有一个nil对象”的错误。目前,我用一条“除非对象为零”的消息来逃避他们,但这条消息变得非常丑陋。例如: unless params[:professiontypeinfo].nil? unless params[:professiontypeinfo][professiontypeid].nil? unless params[:professiontypeinfo][professiontypeid]["indus
unless params[:professiontypeinfo].nil?
unless params[:professiontypeinfo][professiontypeid].nil?
unless params[:professiontypeinfo][professiontypeid]["industrybodies"].nil?
@professional.professional_specialties.find_by_profession_type_id(professiontypeid).industry_bodies = IndustryBody.find_all_by_id(params[:professiontypeinfo][professiontypeid]["industrybodies"])
end
end
end
Soo…逃避这些事情的正确/优雅方式是什么?下面的方法将按顺序评估每个条件,如果条件失败而不继续下一个,则退出
unless params[:professiontypeinfo] && params[:professiontypeinfo][professiontypeid] && params[:professiontypeinfo][professiontypeid]["industrybodies"]
更新:根据Jimmy的注释=]
Hash[]
在请求的密钥丢失时返回false,因此
如果参数[键]
如果params
没有键,将返回false
和ed条件短路(即当第一个条件为假时停止评估),因此即使缺少键
,以下操作也会起作用:
if params[key] && params[key][sub_key]