2012-11-10 68 views
-1

我有兩個陣列功能:問題與Array.delete_at在Ruby中

def available_billing_address_types 
    options = [] 
    options << "Home" if address.present? 
    options << "Organisation" if organisation.present? 
    return options   
end 

def available_billing_address_types 
    options = ["Home", "Organisation"] 
    options.delete_at(0) if address.blank? 
    options.delete_at(1) if organisation.blank? 
    return options   
end 

第一個按預期工作,秒一個沒有。

我懷疑無法兩次撥打delete_at()

或者我在這裏錯過了什麼?

感謝您的幫助......

回答

3

你有這樣的數組:

options = ["Home", "Organisation"] 

如果你現在打電話options.delete_at(0)你有這樣的數組:

options = ["Organisation"] 

所以,如果你現在打電話options.delete_at(1)沒有要刪除的元素1

你可以這樣做:

def available_billing_address_types 
    options = ["Home", "Organisation"] 
    options.delete("Home") if address.blank? 
    options.delete("Organisation") if organisation.blank? 
    return options   
end 
+0

OK,這是一個有點尷尬。無法看到所有樹木的木材。謝謝!! – Tintin81