Malumunuz Rails “Prototype” alt yapısını kullanarak Ajaxsal olayları içerisinde bulunan “helper” dosyaları sayesinde oldukça kolay kullanıma indirgedi.
Yazıda “bildirgeç”te bulunan “tutma” sisteminin Rails ile nasıl yapılabileceÄ?ine veya bir oy sisteminin Rails ile nasıl yapılabileceÄ?ine deÄ?ineceÄ?iz. Yazının amacı “basit” ajax olaylarını nasıl yapabileceÄ?imizin dıÅ?ında “RJS” Å?ablon sistemini kullanabilmeyi göstermektir.
UYGULAMA Ã?RNEÄ?İNE BAKABİLİRSİNİZ.
Yazının sonunda “bildirgeç” üzerinde bulunan “tuttum” yapısının daha geliÅ?miÅ? bir sürümünü elde etmiÅ? olacaÄ?ız. “Daha geliÅ?miÅ?” çünkü tutulduÄ?u anda “tutan kiÅ?ilerin” listesini de güncelleyecek.
Not: Yazıda kullanıcılar ve kullanıcı giriÅ?leri Å?eklinde bir sistemimiz olmadıÄ?ı için oluÅ?turacaÄ?ımız fonksiyonları anlık yapacaÄ?ız. BaÅ?ta belirtildiÄ?i üzere asıl amaç “RJS” ile birden fazla alan güncellemesidir.
Ortamın Hazırlanması
Sistemimiz de kullanmak üzere kullanıcı altyapımız olmadıÄ?ı için deÄ?erleri “params” ile göndereceÄ?iz ve kaç kiÅ?inin yazıyı tutup/tutmadıÄ?ını “session” üzerinde tutacaÄ?ız (Ki tutan kiÅ?i 1 yahut 0 olmak durumunda). Yazıyı tutmak için yönlendirilecek tek fonksiyon tüm iÅ?lemleri yapmamıza yetecektir.
Not: Kullanım yapılacak görünüm dosyasına JavaScript dosyalarını “include” etmeyi unutmayınız.
<%= javascript_include_tag :defaults %>
�rnek Gösterim Alanımız (index.rhtml):
<head>
<title>Tutaç Denemesi</title>
< %= javascript_include_tag :defaults %>
</head>
<body>
<div id="div_tuttum">< %= render :partial => 'tutac' %></div>
<hr />
<div id="div_tutan">< %= render :partial => 'tutanlar' %></div>
</body>
</html>
Yukarıdaki görünüm dosyamızda yazıyı tuttum kısmını & tutanların listesini gösteren kısımları ayrı bir “görünüm” üzerinde tutuyoruz. Bunun sebebi güncellemeyi yapmak için komutların bir daha yazılmasını engellemektir.
_tutac.rhtml
tutac_yazi fonksiyonumuz tarafımızdan oluÅ?turulan “yardımcı” fonksiyondur. Görevi ise yazının tutulup/tutulmadıÄ?ına göre baÄ?lantıyı güncellemesidir. Burada “tut” parametresi tarafımızdan gönderilmektedir. Sebebi ise belirtildiÄ?i üzere “kullanıcı altyapısız” yapmaya çalıÅ?mamızdır. Denetleyicinize ait “Helper.rb” dosyasına eklemeniz gerekmektedir.
if durum
link_to_remote("TutulmuÅ? / Bırak", :url => { :action => 'yazi_tut', :tut => false })
else
link_to_remote("Yazıyı Tut", :url => { :action => 'yazi_tut', :tut => true })
end
end
_tutanlar.rhtml
< % if adet == 0 %>
Yazıyı ilk tutan kiÅ?i olabilirsiniz!
< % else %>
Tutan KiÅ?i Sayısı: < %= adet %>
< % end %>
Tutanlar .rhtml dosyamız “yazıyı tutan” kiÅ?ileri listeleyecektir. Biz sadece adet gösteriyoruz.
Denetleyici iÅ?levlerimiz:
session[:tutan_adet] = 0
@tutuldu = false
end
# yazı tut olayı
def yazi_tut
@tutuldu = @params['tut']
if @tutuldu
session[:tutan_adet] = session[:tutan_adet].to_i + 1
else
session[:tutan_adet] = session[:tutan_adet].to_i - 1
end
end
yazi_tut görünüm dosyamız (yazi_tut.rjs)
page.replace_html 'div_tutan', :partial => 'tutanlar'
page.visual_effect :highlight, 'div_tutan', :duration => 2
“Yazı Tut” fonksiyonuna ait görünüm dosyamız “RJS” Å?ablon sistemini kullandı. JavaScript olaylarını bu görünüm üzerinden yaptık. “Yazı Tut” iÅ?levi çalıÅ?tıÄ?ı zaman sayfamızdaki “div_tuttum”, “div_tutan” div’lerini güncelledik ve “div_tutan”a scriptalicous kütüphanesinden “highlight” efekti uyguladık.
Ã?rneÄ?i uyarlayarak daha farklı alanlarda kullanabilirsiniz.






