Pagination Links In One Line Of Code 14/06/07
- < %= (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.
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.
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.
# 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.






