Sayfaya kalıcı bağlantı adresleri için verilecek stringlerde temizlik yapmak lazım oluyor. Bunu yazmıştım “Muhtıra” için, onun çıkacağı yok en azından içindeki güzel kodları paylaşayım.
isim.downcase!
{'İ' => 'i', 'Ğ' => 'g', 'Ü' => 'u', 'Ş' => 's', 'Ç' => 'c', 'Ö' => 'o',
'ğ' => 'g', 'ü' => 'u', 'ş' => 's', 'ö' => 'o', 'ç' => 'c', 'ı' => 'i'}.each_pair { |a,b| isim.gsub!(a,b) }
isim.gsub(/([^ a-zA-Z0-9_-]+)/, '').tr(' ', '-').gsub(/--/, '-').gsub(/-$/, '')
end
irb(main):046:0> kisa_ceviri(”Permalink İçin Çeviri, String Temizleyici Falan.”)
=> “permalink-icin-ceviri-string-temizleyici-falan“
Bu kodu alıp Ruby’nin nimetlerinden faydalanalım ve şöyle yapalım.
NOT: Bu kod 18/08/2008 de güncellenmiştr. downcase! ya da diğer selfi değiştiren fonksiyonlarda değişen bir yer yoksa sonuç olarak nil döndürmektedir. bu nedenle downcase! den dönen bilgi direk str değişkenine aktarılmamıştır.
def kisa_ceviri
self.downcase!
str = self
{'İ' => 'i', 'Ğ' => 'g', 'Ü' => 'u', 'Ş' => 's', 'Ç' => 'c', 'Ö' => 'o',
'ğ' => 'g', 'ü' => 'u', 'ş' => 's', 'ö' => 'o', 'ç' => 'c', 'ı' => 'i'}.each_pair { |a,b| str.gsub!(a,b) }
str.gsub(/([^ a-zA-Z0-9_-]+)/, '').tr(' ', '-').gsub(/--/, '-').gsub(/-$/, '')
end
end
irb(main):046:0> “Permalink İçin Çeviri, String Temizleyici Falan.”.kisa_ceviri
=> “permalink-icin-ceviri-string-temizleyici-falan“







acep bu en son konu nereye yapıştırmalıyız ?
x adında controller’ım var. bunun içine yapıştırdım.
user diye bir action’ım var x controller’ı içinde.
user action’ına bağlı view de şöyle bişey yazdım,
fakat şöyle bir hata verdi:
undefined method `kisa_ceviri’ for “Lynda.Com Ruby On The Rails Essentinal Training”:String
neyi yanlış yapıyorum acaba ?
Merheba tuncay,
Bu kodu her dosyada kullanabilmek için environment.rb dosyasına kopyalabilirsin. Bu arada kodda ufak bir değişiklik yaptım, son halini alırsan daha yararlı olacaktır.
İyi çalışmalar.