2010-11-03 13 views
8

Bu sorgu dayanarak virgülle ayrılmış liste olarak:Raylar: Ekran @cars

@cars = Car.where("manufacturer_id IN ?", @mfts.select("id")).limit(30).select("id") 

nasıl böyle görünümünde arabaların kimlikleri görüntülenir (veya benim sorgu yeniden yazmak gerekiyor) olabilir?

3,2,5,12,15,24,34,63,64,65,66,85

Çok teşekkürler - Bunun için baktım ama doğru soru/cevap bulamadık. hangi değil (bu tabii ki listesinin sonunda bir sokak virgül bırakır -

#view 
<% @cars.each do |c| %><%= c.id %>,<% end %> 

bu konuda gitmek için daha iyi bir yol varsa ben bilmiyorum:


bir çözüm yapmaktır bir anlaşma kırıcı. Daha şık çözümler var mı?

cevap

29

Bir satır:

<%= @cars.map(&:id).join(",") %> 
+0

Bu harika cevap için teşekkürler! Aynı şeyi bir dizi ile nasıl başarabilirim? Bir dizimde [3,2,5,12,15 ...] var ve sadece köşeli parantezleri çıkarmam gerekiyor. – sscirrus

+0

Basitçe [3,2,5,12,15] .join (",") '. '@ Cars.map (&: id)' aslında kimlikleri içeren bir dizi döndürür. – PeterWong

8

Eğer hepiniz bir yöntem veya özellik erişmek istiyorsanız .. biraz daha okunabilir olan başka yolu bir blok satır içi daha iyi görünebilir, orada, &:id kafa karıştırıcı gibi görünüyor yazma .

<%= @cars.map { |car| car.id }.join(", ") %> 

P.S. ... map için başka bir isim o Smalltalk denilen şey budur .. collect olduğunu.

Bakın güzel!

<%= @cars.map { |car| car.id }.to_sentence %> 

Raylar uygun yorum ve son iki unsurları arasındaki kelime 've' katacak: Artık yazabilir 3.0+ Raylar