İlk olarak projemizin isminde veritabanı oluşturmalıyız. Projenizin içindeyken
rake db:create
komutunu çalıştırarak veritabanında <proje-adi>_development ve <proje-adi>_test adında iki tane database'in oluşturuldugunu görebilirsiniz.
Bu noktadan sonra public/index.html default sayfamızı silemiz gerekmektedir.
rails generate controller home
komutunu çalıştırdığımızda
create app/controllers/home_controller.rb
invoke erb
create app/views/home
invoke test_unit
create test/functional/home_controller_test.rb
invoke helper
create app/helpers/home_helper.rb
invoke test_unit
create test/unit/helpers/home_helper_test.rb
çıktısındada görüldüğü gibi app/ altında controller ve views alanlarında home isimlerini içeren çeşitli dosyalarımız oluşturuldu şimdilik
biz controller ve view alanları ile ilgileneceğiz. home bölümünü anasayafa yapacağımız göz önunde bulundurarak içinde index.html.erb dosyamızı oluşturabiliriz.
erb uzantısı ruby kodları içereceği anlamındadır. Eğer bu index sayfamızı kendimiz oluşturur isek config/routes.rb dosyamızın içeriğine get "home/index"
kodunu yerleştirmeliyiz ve home'un control dosyasının içerisine index methodu( def index ) eklemeliyiz bu method home/index çağırıldıgında çalışacak olan methoddur yada
rails generate controller home index
komutu ile routes.rb , home_controller.rb içeriğine index'e bağlı komutlarımızı otomatik olarak eklenip app/views/home/index.html.erb dosyasıda bizim
için otomatik olarak oluşturulacaktır.
Controller ile View arasındaki bağlantıyı azda olsa anlayabilmek için app/controller/home_controller.rb dosyamızın içerisindeki index methodunda
@deneme = "Hello Rails" deneme adında oluşturdugumuz sınıf değişkenimize atadıgımız stringi /home/index içinde göstermek istersek eğer.
app/views/home/index.html.erb içeriğinde <% %> ruby kodlarının yazılacağı ayraçların arasına <%= @deneme %> yazıp localhost:3000/home/index 'de ekranda Hello Rails yazdıgını
görebiliriz.
Eğer Hello Rails yazımızın 5 defa gösterilmesi istersek, index.html.erb dosyamızın içeriğini:
<html>
<head>
</head>
<body>
<%
5.times do
%>
<h1> <% @deneme %></h1>
<%
end
%>
</body>
</html>
olarak değiştirebiliriz.
peki biz home altında başka bir html dosyası yaratmak istediğimizde bu html'ler için kullanılcak methodları nereden çağırmalıyız. İndex'ten mi? ..Hayır
Rails 'in basit ama mantıklı bir yapısı var bu noktada home altında oluşturulacak her html dosyası için controller/home_controller.rb içinde method yaratmalıyız.
Yani diyelimki kullanıcı index sayfamızda çıkış linkine tıkladıgında exit.html.erb 'yi çağırmasını ve buna bağlı olarak ekranda çıkarken görmesini istediğimiz metni bastırmak istediğimizde
ilk olarak home/exit.html.erb dosyasını oluşturduktan sonra home_controller.rb dosyasında
def exit
@cikis = "gule gule"
end
eklemesini yapıp , exit.html.erb'yi
<html>
<head>
</head>
<body>
<%= @cikis %>
</body>
</html>
index.html.erb 'içinden link_to fonksiyonunu kullanarak link verirsek eğer:
<%= link_to "Cıkış yapınız." , :action => "exit" %>
ifadesinde görüldüğü gibi exit sayfası çağrılıyor ve bu sayfa çağırıldıgında controller kısmındaki değişkenlere hakim olunabilir. İlerleyen konularda sayfa çağırılırken değer gönderme konularınıda yazmaya çalışacağım.
Ve bu aşamada sunucumuzu çalıştırdığımız zaman yönlerdirme hatası alacağız
nedeni ise config/routes.rb içinde get home/exit satırını eklemediğimiz
için.