配列のdeleteメソッドは、返り値として引数と一致した場合selfを返します。
よって、nilを削除しようとすると、返り値にnilを返してきます。
これでは結果がわかりません。
更に厄介な事には、破壊的メソッドなので後々にも影響が出ます。
> ary = [1,2,3,nil,4] #=> [1, 2, 3, nil, 4] > ary.delete(nil) #=> nil > ary #=> [1, 2, 3, 4]
気軽に使うメソッドではなかったみたいですね(白目
こういう場合は素直にcomapctを使えば綺麗になります。
> ary = [1,2,3,nil,4] #=> [1, 2, 3, nil, 4] > ary.compact #=> [1, 2, 3, 4] > ary #=> [1, 2, 3, nil, 4] > ary.compact #=> [1,2,3,4]