Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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 新手rails问题:处理.each循环中零值的优雅方法?_Ruby On Rails - Fatal编程技术网

Ruby on rails 新手rails问题:处理.each循环中零值的优雅方法?

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

目前只是在干预Rails,并努力找出如何避免“当你没有预料到它时,你有一个nil对象”的错误。目前,我用一条“除非对象为零”的消息来逃避他们,但这条消息变得非常丑陋。例如:

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]