1. < %= (1..@sayfa_pages.page_count).collect { |i| link_to(i, {:page => i}) }.join(' - ') unless @sayfa_pages.page_count == 1 -%>

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.

class BlaBla < ActionController::Base
 
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
<script src="/gunluk/etiket_tamamlama_liste" type="text/javascript" ></script>
< %= 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(INPUT_ADI, GÖSTERİLECEK_LİSTE_IDSI, JAVASCRİPT_DEĞİŞKEN_ADIMIZ, DİĞER AYARLAR)

Autocompleter.Local‘ın scriptaculous içinde olduÄŸunu belirterek javascript_include_tag :defaults ile genel javascriptsel dosyaları dahil etmeyi unutmayınız.

layout ‘duzen’    07/03/07

“layout” ve sayfa düzeni üzerine

Ruby On Rails, normal Å?artlar altında sayfayı ekrana yansıtmak için ayrı bir klasörde (app/views/…) bulunan “.rhtml” uzantılı dosyaları kullanır (eruby altyapısını kullanır). Hangi dosya olduÄ?unu ise “denetleyici adı”/”sayfa ismi”.”rhtml” Å?eklinde bulur. (”Partial” dosyaların baÅ?ına “_” koyarak…)
Normal Å?artlardan kasıt eÄ?er fonksiyon sonunda sayfaya veri döndürülmemiÅ? ise (örn: render :partial, render :text gibi render komutları “sayfaya veri döndüren” komutlardır.) anlamına gelmektedir.

Normalde ekrana görünüm dosyasını yansıtırken eÄ?er “app/views/layouts” klasöründe “application.rhtml” dosyası mevcut ise yansıtılacak olan görünüm dosyası “application.rhtml” dosyasında < %= @content_for_layout %> yahut < %= yield %> bulunan yere yerleÅ?tirilir.

Ã?rneÄ?in yalnızca yönetim paneli için kullanılacak bir sayfa düzeni oluÅ?turmak isterseniz oluÅ?turacaÄ?ınız “.rhtml” dosyasını “app/views/layouts” dizinine koyduktan sonra, yönetim paneline ait denetleyicilere bunu bildirmeniz gerekecektir.

# Genel Yönetim Düzenimiz
# app/views/layouts/yonetim.rhtml
#
<
html>
....
<
body>
< %=
@content_for_layout %>
<
/body>
<
/html>
 
#
# Denetleyici Dosyamız
#
class Yonetim::TestController < ApplicationController
 
   
# Genel sayfa düzeni olarak 'yönetim'i kullan
   
layout 'yonetim'
   
   .....

Yukarıdaki denetleyici tüm sayfalarında (sayfalardan kasıt; oluÅ?turulmuÅ? fonksiyonlardır) kendisini “yonetim.rhtml” dosyası içerisine gömecektir.

Fakat, yalnızca alanlık olan görünüm dosyaları bunun dıÅ?ındadır. (Alanlık görünüm dosyaları dosya isimlerinin baÅ?ına “_” alırlar ve render :partial ile sayfada herhangi bir yere yansıtılabilirler.)
“Partial” görünüm dosyaları sayfa düzeni ile beraber ekrana yansıtılmazlar.

Sayfada yayımlanan yazılar aksi belirtmedildiği sürece Murat Arif Çeliker'e aittir. Yorumlar, yorumu yapan kullanıcıların kendi görüşleridir.
açılış - deneyhane - tasarılar - hakkımda - iletişim -

Sitede altyapı olarak Wordpress kullanılmıştır.