ben

OMÜ , Bilgisayar Mühendisliği, 13'

28 Ocak 2015 Çarşamba

Rails blog -1


Olusturdugumuz blog projesine devam edip basit bir blog oluşturalım:Terminal ekranından projemizin olduğu dizine gelip controller olusturalım:

rails generate controller posts

Proje klasörü içerindeki config=>routes.rb  dosyasına:

root  'posts#index'
resources :posts

ekleyelim burdaki root eylemi localhost:3000  sayfasının index sayfasına yönlendirmesidir.
terminale; rake routes yazalım: edit,shoe, new gibi sayfa yönlendirmeleri otomatik olarak oluşmus durumda, app=>views=>posts  klasörü içerinine

edit.html.erb
index.html.erb
new.html.erb
show.html.erb

dosyalarını olusturalım. daha sonra controler klasörü içerisinde bulunan posts_controller.rb klasörüne  eylem methodlarını tanımlayalım:

def index
end
def show
end
def new
end
def create
end
def edit
end
def update
end
def destroy
end

ilk açılacak olan sayfamız index.html i düzenleyelim. BUrada veri tabanımızdaki tüm kayıtlar gösterilecek. Bu komutu(all) controller içerisindeki index methodunun içerisine şu şekilde yazalım:

def index
    @posts=Post.all
  end

views=>posts=>index.html.erb içerisine;


Burada link_to methodu ile yazı baslıgına tıkladığımızda yazı içeriğinin görüntülenmesini sağladık.
alt kısımda bulunan  new_post_path ifadeside  new methodu ile acılmasını istediğimiz yeni yazı ekleyebileceğimiz sayfaya gitmemizi sağlayan method. BU methodun çalısması için controller içerisindeki show  içerisine  şu komutu yazalım:

def show
  @post=Post.find(params[:id])
  end

 Suana kadar olnalara bir bakalım,
terminalden rails s ile serverı çalıstırıp localhost:3000 adresine gittiğimizde:

Yeni yazı eklemek için controller.rb içerisindeki  new methodu içerisine aşağıdaki komutu ekleyelim:

  def new 
   @post=Post.new
  end

views=>posts=>new.html.rb dosyasına aşağıdaki komutları yazalım:

Ekle butonuna tıkladığımızda girdiğimiz verileri ekleyebilmesi için controller.rb içerisindeki create methoduna aşağıdaki komutları ekleyelim:


 def create
    @post=Post.new(post_params)
    if @post.save
       redirect_to posts_path, notice=>"yeni blog yazısı kaydedildi" 
    else
       render "new"
    end
  end


private
  def post_params
    params.require(:post).permit(:title, :content)
  end
end

post_params methodu gelen veriyi veritabanına eklenebilecek şekilde düzenliyor. Buradan gelen veri eğere kaydedildiyse  true değeri dönüyor. burada redirect_to ile sayfayı yönlendiriyoruz. Yönlendirirkende sayfa üzerine not düşüyoruz. Bunun için  views=>layout=>application.html.erb dosyasının body tagları arasına:

<% flash.each do |key,value| %>
  <p><%= value%></p>
<% end %>
<%= yield %>

komutlarını yazıyoruz buradaki value değeri notice keyine atadığımız hata stringidir.

controller içerisindeki create methoduna dönersek, buradaki else kısmındaki render ise kayıt olmadıgında  new bölümünde kalmasını sağlar.

Blogumuzdaki son duruma bakalim: