products
bir galeriyi görüntülemek istiyorum. Burada hem satılık hem de satılık olmayan ürünleri dahil ediyorum. Sadece listenin ön tarafında görünecek olan products
numarasının ve satış için bulunmayan nesnelerin listenin sonunda görünmesini istiyorum.Bir nesnenin listesini, bir nesnenin bir yönteme verdiği cevaba bağlı olarak sıralamak mümkün mü?
available_products = []
sold_products = []
@products.each do |product|
if product.on_sale?
available_products << product
else
sold_products << product
end
end
:
bana bunu gerçekleştirmek için kolay bir yolu daha sonra onları (?? On_sale nesnelerin bir listesi ve on_sale değil nesnelerin bir listesini) birleştirme, iki listeyi yapmaktır. . . Ama benim mevcut app yapısına yapmak, bu benim kodda bir tuhaflık nedeniyle aşırı miktarda refactoring gerektirecektir (Ben sayfalama kaybettim ve ben refactor değil). Mevcut nesne listesini sıralamak için product
modelinin on_sale?
bir boole değeri döndüren yöntemi daha kolay olurdu.
Varolan bir listeyi daha zarif bir şekilde yineleyebilir ve bu doğru veya yanlış değerlere göre sıralayabilir miyiz? Sadece soruyorum çünkü bu çerçeve/dil içinde saklı olduğunun farkında değilim ve çalışmamın benden önce yapılıp yapılmadığını bilmek istiyorum.
harika görünüyor! Ama benim özel kodumla sorun yaşıyorum, belki bana yardım edebilirsin. Tek liner kullanırsam, falseClass ile karşılaştırılamazsa aşağıdaki hatayı alırsam, ve bahsettiğin ilk kodu kullanırsam, [MyModule] :: Ürünü [MyModule] ile karşılaştırırdım :: Ürün başarısız oldu '. Bunun neden başarısız olabileceğinden emin değilim. – Ecnalyr
Bazı notlar: 1) Her zaman mümkün olduğunda 'sort_by' '' sort' '' kullanılmalıdır (daha açıklayıcı, daha özlü, daha verimli). Yukarıda gösterilen tüm parçacıklarda kullanmak mümkündür. 2) Tahribatsız “Numaralandırılabilir # sort_by” ile bağlantı kurmam tercih edilebilir, mümkün olduğunda yerinde güncellemelerden kaçınılmalıdır. 3) '@ product.sort_by (&: on_sale?)'. – tokland
'<=> 'gibi görünüyor Booleanlar için doğru çalışmıyor (ruby-1.9.3-p327 içinde). Şimdi bakıyorum ... Evet, http://grosser.it/2010/07/30/ruby-true-false-comparison-with/ daha önceki bir sürüm için onayladı – AlexChaffee