2012-11-15 14 views
9
kısmi

içindeki koleksiyon boyutunu var alınıyor:Raylar: kısmi koleksiyonu Render: Ben kısmi ile işlemek istediğiniz öğelerin koleksiyonu

@items = ['a','b','c'] 

<%= render :collection => @items, :partial => 'item' %> 

ve ben artan sayılarla ile unsurlarını numara istiyorum. Yani çıkış olmalıdır:

3: a 
2: b 
1: c 

Ben raylar biliyorum ben azalan öğeleri sayı istiyorsa bu yüzden, aşağıdaki kısmi yaratabilecek, kısmi içinde bir sayaç sağlamaktadır:

<%= item_counter %>: <%= item %> 

hangi bana

1: a 
2: b 
3: c 

Ama artan sayılar için, ben toplam sayısı o ihtiyaç verir Kısmi sonra

<%= render :collection => @items, :partial => 'item', :locals => {:total => @items.size} %> 

ve:

<%= total - item_counter %>: <%= item %> 

Ama tekrarı gibi bana hissediyor hale yöntem zaten tanıdığı çünkü kısmi yerel ile sağlayabilir f öğeleri, Koleksiyonun büyüklüğü.

gerçekten yerel bir değişken kullanmak dışında kısmi içinde bir koleksiyon öğelerin toplam sayısını almak için hiçbir yolu var mı? Eğer collection_iteration adında bir fonksiyon/değişken erişimi olan kısmi İçinde

:

+1

sayılı (https://github.com/rails/rails/blob/master/actionpack/lib/action_view/renderer/partial_renderer.rb) –

+0

[kendiniz görün] Orada baktım, ama ben düşündüm bir şey eksikti. –

cevap

11

aşağıdaki Raylar Version 4.2 beri mümkündür. collection_iteration.size numaralı telefonu arayarak toplamı verecektir. changelog itibaren

: koleksiyonları ile partials işlerken

iterasyon nesne yerel değişken #{template_name}_iteration olarak kullanılabilir.

Bitti yinelenilen toplama size erişim sağlayan, akım index ve iki kolaylık yöntemleri first? ve last?.

+1

Hayır, kısmi olarak "koleksiyon" yoktur. En azından Rails 3.2.6'da değil. Bu bilgiyi nereden aldın? –

+0

Bunu kaynaktan aldım: https://github.com/rails/rails/blob/6b8dd70083d747535cc35dce176e5afb6ad98177/actionpack/lib/action_view/renderer/partial_renderer.rb#L220 – lucasuyezu

+0

Ayrıca, iş başvurumda cevabı göndermeden önce test ettim. Rails versiyonunu Salı günü kontrol edebilirim, ama işe yarıyor. Bu çalışırsa – lucasuyezu