Bu mini yazıda grouped_collection_select yardımcı form elemanı ile nasıl gruplanmış select yapabiliriz ona bakacağız.

Senaryoda İl ve İlçeler olsun. Bu il veya ilçeye ait ilişkili bir yazı ekleyebilelim. İlçelerin listelendiği bir selectbox düşünelim ve ilçeleri illere göre gruplayalım.

Aralarındaki ilişkiler bu şekilde. Şimdi article için ilçe seçebileceği bir select formu oluşturalım.

Burada grouped_collection_select methoduna gönderdiğimiz parametreleri açıklayacak olursak;

  • :town_id – Article modelinde bulunan, Town modeli ile ilişki kurduğumuz id alanı.
  • @Cities – articles_controller.rb dosyasında illeri çektik. Bunlar grup başlığı olacak.
  • :towns – @Cities içerisindeki her bir eleman (city) ile ilişkili listelenmesini istediğimiz (option tagı şeklinde listelenecek) ilçeler.
  • :name  – @Cities grup başlığı olacak demiştik. Burada @Cities içindeki her bir eleman için başlınta görünmesini istediğimiz alanını belirliyoruz. Ben İl’in adı görünsün istiyorum o nedenle :name dedim.
  • :id – Seçilebilir olan option tagları için value değeri town’a ait olan id olsun istiyorum.
  • :name – option tagları için görünmesini istediğin ilçe(town)’nin ismi.

Sonuç olarak elde edeceğimiz görüntü şu görseldeki gibi olacaktır.

grouped_collection_select