Tam Sürümünü Görmek İçin : Ruby on Rails ile Klasik "Merhaba Ceviz"
Artik her dilde oldugu gibi ruby on rails de de, bir merhaba dunya yapalim dedim, EE, merhaba ceviz oluncada, biraz farkli olsun diyip, Turkce ve Ingilizce sekilde bir Merhabalayalim dedim. (Basit ama 1 adim daha atalim..)
app/controllers/
Dosya adi: ceviz_controller.rb
class CevizController < ApplicationController
def index
@zaman= Time.now
end
def tr
end
def en
end
end
app/views/ceviz/
Dosya adi: index.rhtml
<html>
<head>
<title>Cevize Merhaba - Hello to Ceviz</title>
</head>
<body>
<h1>Ceviz'e Merhaba</h1>
<ul>
<li><a href="ceviz/tr">Turkce</a></li>
<li><a href="ceviz/en">Ingilizce</a></li>
</ul>
<h2><a href="http://forum.ceviz.net">Ceviz Forum</a></h2>
<p>Saat suan: <%= @zaman %>
</body>
</html>
app/views/ceviz/
Dosya adi: tr.rhtml
<html>
<head>
<title>Merhaba Ceviz!</title>
</head>
<body>
<p>Merhaba Ceviz</p>
<p><a href="/ceviz">Geri Don</a></p>
</body>
</head>
app/views/ceviz/
Dosya adi: tr.rhtml
<html>
<head>
<title>Hello Ceviz!</title>
</head>
<body>
<p>Hello Ceviz!</p>
<p><a href="/ceviz">Back</a></p>
</body>
</head>
Görüntüler Ekte..
@Ayrica istersek sadece ROR Görünümlerini kullanmadan, su kodlarlada merhaba diyebilirdik.
class CevizController < ApplicationController
def index
render_text "Cevize Merhaba! - Hello Ceviz!"
end
def en
render_text "Hello Ceviz!"
def tr
render_text "Merhaba Ceviz!"
end
end
Ama sayfa yapilarini kullanamazdik sadece bu kodla, görünüm ve html taglarini
uygulayamazdik.
Adresler ise su sekilde olurdu. ve http://localhost:3000/ceviz linkine girdigimizde tr/en linklerine gecis yapamazdik.
http://localhost:3000/ceviz
http://localhost:3000/ceviz/tr
http://localhost:3000/ceviz/en
Kolay gelsin.
Ustte yazdigimiz merhaba ceviz, uygulamasinda linkleri Views'de bildigimiz HTML kodu olan <a href=""> </a> olarak kullanmistik, Eger istersek bunu yine views dosyamizda, link_to Metodunu kullanarak link olayını gerceklestirebiliriz.
<%= link_to "Link Adı", { :action=> "Link Adresi"} %>
<p><%= link_to "Geri Don", { :action=> ""} %></p>
<p><%= link_to "Geri Don", { :action => "" }, :popup => true %></p>
<p><%= link_to "Geri Don", { :action => "" }, :popup => ['new_window', 'height=300,width=600'] %></p>
<p><%= link_to "Geri Don", { :action => "" }, :confirm => "Emin misiniz?", :post => true %></p>
Düz olarak link verir.
Tam sayfa Popup olarak yeni pencerede acarak link verir.
Popup penceresi acarak ve boyutlandirarak link verir.
Acilacak pencere icin, bizi uyarir.
Ornek kullanim, (ustteki app/views/ klasorundeki "tr.rhtml" ele alarak)
<html>
<head>
<title>Merhaba Ceviz!</title>
</head>
<body>
<p>Merhaba Ceviz</p>
<p><%= link_to "Geri Don", { :action=> ""} %></p>
<p><%= link_to "Geri Don", { :action => "" }, :popup => true %></p>
<p><%= link_to "Geri Don", { :action => "" }, :popup => ['new_window', 'height=300,width=600'] %></p>
<p><%= link_to "Geri Don", { :action => "" }, :confirm => "Eminmisiniz?", :post => true %></p>
</p>
</body>
</head>
Resim goruntuleme, Metot adı: image_tag
Kod: <%= image_tag("resimadi.jpg", :size => "600x350", :border => 2) %>
Eger sitemizin bir yerine bir resim eklemek istiyorsak, HTML sayfalarda <img src="" /> komutunu RORda image_tag Metodu ile kullaniyoruz.
<%= image_tag("resimadi.jpg", :size => "600x350", :border => 2) %> (resimadi.jpg yerine resmi gosteriyoruz, burada resmimiz public/images klasorunun icinde olmasi gerekiyor. Eger ki, .jpg uzantisini belirtmezsek, otomatik olarak PNG uzantisini ele aliyor. :size => "5x5" ile boyutlandiriyoruz. :border => 2 ile ise, resmin kenarlarina border uyguluyoruz.
Resim goruntulemeye link vermek, Metot adı: link_to(image_tag)
Kod: <%= link_to(image_tag("resimadi.jpg", :size => "600x350", :border => 2), "http://www.ceviz.net") %>
Buradada resim goruntuleme olaylari usttekiyle ayni sekilde link verme olayi, ise sadece http://www.ceviz.net kismi ile duzenlenebilir.
Ruby on Rails Charset Ayarları:
Bu ayarları denetleyicidende saglayabiliriz.
Eger ki hazirladigimiz uygulamanin charsetini kendi denetleyicisinden duzenlemek istiyorsak,
Kullanım Kodu:
class CharsetUygulamaController < ActionController::Base
before_filter :set_charset
def set_charset
@headers["Content-Type"] = "text/html; charset=iso-8859-9"
end
end
before_filter'i kontrolumuzdeki butun islevlerden once denetlenmesi icin kullaniriz.
Ornegin ustte merhaba ceviz uygulamamizda, Turkce - Ingilizce olarak kullanmistik. ceviz_controllers.rb dosyamizi su kodlarla degistirirsek eger, istegimiz yerine gelmis olacaktir.
class CevizController < ApplicationController
before_filter :set_charset
def index
@zaman= Time.now
end
def tr
end
def en
end
def set_charset
@headers["Content-Type"] = "text/html; charset=iso-8859-9"
end
end
Boylece Ingilizce karakter yerine, Turkce karakterleri kullanabiliriz. (Turkce=Türkçe, Ingilizce=İngilizce, Geri Don= Geri Dön)
Ruby on Rails calisirken 1 seyle karsilastim basit ama etkili, Bunda prototip kullanarak, input'umuza girilen veriyi, ajax yontemi ile sayfa degistirmeden listemize ekliyoruz.
Oyleyse konsolumuzda,
Komutlarimizi calistiralim,
rails listdemo (komutumuz ile, projemizi olusturalim)
cd listdemo
ruby script/generate controller listdemo (Windows) (Denetleyicimizi yarattik)
ardindan, Manual olarak, app/controllers/ dizinindeki listdemo_controller dosyamizi acip, icini su kodlarla dolduruyoruz.
class ListdemoController < ApplicationController
def index
end
def veriekle
render_text "<li>" + params[:yeniveri] + "</li>"
end
end
Dikkat etmemiz gereken yer ise, veriekle yi tanimliyoruz, ve params tagi icine yeniveri ismini tanimliyoruz. bunlari <li></li> taglari degilde <p></p> taglari arasinada ekleyebiliriz, burada dikkat edilecek baska 1 kisim yok..
Bu islemi tamamladiktan sonra,
app/views/listdemo/ dizinindeki index.rhtml dosyasini acip, icini su kodlarla dolduruyoruz.
<html>
<head>
<title>Ajax Liste Demo</title>
<%= javascript_include_tag "prototype" %>
</head>
<body>
<h3>Ajax Kullanarak Listeye Veri Eklemek</h3>
<%= form_remote_tag(:update => "liste",
:url => { :action => :veriekle },
:position => "top" ) %>
Yeni Veri:
<%= text_field_tag :yeniveri %>
<%= submit_tag "Listeye Veri Ekle" %>
<%= end_form_tag %>
<ul id="liste">
<li>Orjinal Veri, Lutfen yeni 1 veri ekleyin!</li>
</ul>
</body>
</html>
Burada ise, Oncelikle
<%= javascript_include_tag "prototype" %>
tagi ile, Prototip javascriptimizi include ediyoruz. Ardindan, form_remote_tag ile, form tagimizi aciyoruz. Action olarak, controllumuzdeki veriekle klasımızı veriyoruz. Pozisyon olarak, burada top secmisiz, istersek bunu, Top - Bottom, Right, Left olarakda belirleyebiliriz bu bize kalmis..
<%= form_remote_tag(:update => "liste",
:url => { :action => :veriekle },
:position => "top" ) %>
<%= text_field_tag :yeniveri %>
Text field tagimizi acip, icine yeniveriyi tanimliyoruz.
<%= submit_tag "Listeye Veri Ekle" %> ve buda submit tagimiz. Form elementlerimizi bitirdigimize gore, simdi form tagimizi kapatabiliriz.
<%= end_form_tag %> ardindan, Update edecegimiz ID'yi ul taglari ile tanimliyoruz.
<ul id="liste">
<li>Orjinal Veri, Lutfen yeni 1 veri ekleyin!</li>
</ul>
Migration üretecini kullanarak yaratmis oldugumuz veritabaninda tablo olusturabiliriz.
(Migration MySQL, PostgreSQL, SQLite, SQL Server, ve Oracle veritabani uygulamalarini desteklemektedir).
Migration Kurulumu,
Uretec'iyi calistirmak:
ruby script/generate migration yenitablo
db/migrate/001_yenitablo.rb
Uretecimizi calistirdigimizda, bize olusturdugumuz programin "db/migrate" klasoru icerisinde 001_yenitablo.rb adinda bir dosya olusturur.
Bu dosyanin kodlarini, asagidaki kodlarla degistirelim.
class Yenitablo < ActiveRecord::Migration
def self.up
# Bu sütunda tablo ismini olusturuyoruz.
create_table :kullanicilar do |table|
# Sütun isimleri ve degerleri..
table.column :ad, :string
table.column :soyad, :string
table.column :yas, :integer
table.column :kullaniciadi, :string, :null => false
# Bu sütun MD5 hash icermektedir. sifre sutununa 40 olarak limit belirlenmistir. Burayi istediginiz gibi duzenleyebilirsiniz.
table.column :sifre, :string, :limit => 40, :null => false
table.column :eposta, :string
end
end
def self.down
drop_table :kullanicilar
end
end
Bundan sonraki tek yapmamiz gereken seyler, olusturacagimiz tablodaki sutunlarin degerleri.
(Migration ile kullanabilecegimiz degerlerin adlari sunlardan olusmaktadir: :primary_key, :string, :text, :integer, :float, :datetime, :timestamp, :time, :date, :binary, :boolean)
001_yenitablo.rb dosyamizi duzenledikten sonra, yapmamiz gereken sey, programimizin config klasoru icerisindeki, Veritabani baglanti dosyamiz yani database.YML burada, kullanacagimiz Veritabani uygulamasinin adini, veritabani adini, kullanici adi, ve sifremizi ayarlamamiz yeterli..
ardindan, komut satirimizdan "rake migrate" komutunu gondermemiz yeterli,
ardindan komut satirinda bize asagidaki sekilde, yazi gonderecek.
(in C:/program/migra)
== Yenitablo: migrating ================================
-- create_table(:kullanicilar)
-> 0.0470s
== Yenitablo: migrated (0.0630s) =======================
Boylece olusturmak istedigimiz tablo migration tarafindan yaratilmistir.
Yarattigimiz tablonun olusturulup olusturulmadigina, manuel olarak veritabanindan kontrol edebiliriz.
Kolay gelsin.
Forum Yazılımı : vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.