Bir alanı otomatik tamamlama sistemine geçirmek için Rails tarafında 2 satırlık kod yeterli olabiliyor çoğu kez. ActionController alt sınıfına auto_complete_for :model, :alan ve görünümde(view) bu özelliğe sahip olunması istenilen “girişe”(edit) text_field_with_auto_complete :model, :alan. Ben listeyi kendim göstermek istiyorum derseniz de Controllerde auto_complete_for_model_alan fonksiyonunda biraz değişiklik yapabilirsiniz.
Daha hızlı bir çözüm ise “yerel” kullanımla beraber kayıtları JavaScript dizisi biçiminde alıp Autocompleter.Local kullanmak olabilir.
def etiket_tamamlama_liste
etiketler = Etiket.find(:all)
@headers['content-type'] = 'text/javascript'
liste = "var etiket_liste = new Array(#{etiketler.size});\n"
etiketler.each_with_index { |etiket, index| liste << "etiket_liste[#{index}] = '#{etiket.etiket}';\n" }
render :text => liste
end
end
< %= text_field 'giris', 'etiketler' %>
<div class="auto_complete" id="giris_etiketler_auto_complete" ></div>
< %= javascript_tag("new Autocompleter.Local('giris_etiketler' , 'giris_etiketler_auto_complete' ,
etiket_liste, {fullSearch: true, frequency: 0, minChars: 1, tokens: ','});") %>
javascript_tag ile Autocompleter.local için istemci oluşturuyoruz ve listeyi “,” ile ayırarak etiket sisteminde seçimi güzelce yaptırıyoruz.
Autocompleter.Local‘ın scriptaculous içinde olduğunu belirterek javascript_include_tag :defaults ile genel javascriptsel dosyaları dahil etmeyi unutmayınız.






