2010-10-12 69 views
3

現在只是在干涉Rails,並努力想辦法逃避「你沒有預料到它的時候你沒有對象」的錯誤。目前我正在用「除非object.nil?」來逃避它們中的每一個?消息,但它變得非常難看。案例分析:Newbie rails問題:優雅的方式來處理.each循環中的零值?

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 

洙......什麼是逃避這些事情的正確/優雅的方式?

回答

4

Hash[]返回false時所要求的關鍵缺少,所以

if params[key]

將返回false如果params沒有key

以AND條件短路(即停車時,第一個條件是假的評估),所以下面的工作,即使key丟失:

if params[key] && params[key][sub_key] 
2

如果沒有移動到下一個

unless params[:professiontypeinfo] && params[:professiontypeinfo][professiontypeid] && params[:professiontypeinfo][professiontypeid]["industrybodies"] 

更新的條件失敗,下面的方法將評估在指令並退出每個條件:基於Jimmy的評論=]

+1

移除。零?通話將按預期工作 – Jimmy 2010-10-12 01:55:28

相關問題