← Back to list

Flash Mesajları Nedir?

flash mesajları web uygulamalarında kullanıcıya bilgi vermek için kullanılırlar. Oturum açma başarılı, silme başarısız, kayıt başarılı vb…

Gökçe Soylu · 2025-05-20 23:42 · 20 claps · 2.7 min read
#ror #web #web-development #backend #backend-development
Open on Medium ↗
Wiki topics: 🌐 · Web Development

Flash Mesajları Nedir?

flash mesajları web uygulamalarında kullanıcıya bilgi vermek için kullanılırlar. Oturum açma başarılı, silme başarısız, kayıt başarılı vb. Hani web sitede parolayı yanlış girince çat diye bir uyarı çıkıyor ya işte o flash mesaj oluyo:))

Dostum flash mesaj sadece bir sonraki istek sırasında ortaya çıkar ve kendiliğinden silinir. Yani kullanıcı kayıt sayfasını açtı mesaj falan yok. Bilgilerini girdi ve ilerleye bastı yani formu gönderdi işte bu bir sonraki istek oluyor bu sırada kayıt başarılı/başarısız diye flash mesajımız görünür. ve daha sonra kaybolur.

Verdiğimiz örnekteki gibi bir flash mesaj için neler yapmamız gerekiyor açıklayalım.

Flash Mesaj Controller

Öncelikle controller’ımızı oluşturmamız gerekiyor. Neticede Biz yeni kullanıcı oluşturmayı deniyoruz ve başarılı olup olmadığına dair kullanıcıya bilgi vericez. O zaman user kısmında create action’ınında flash mesaj için gerekli kodlamayı yapmalıyız.

class UserController < ApplicationController

  def create
    @user = User.new(user_params)
    if user.save
      flash[:notice] = "account created successfully"
      redirect_to @user
    else
      flas[:alert] = "could not creat account"
      render :new
    end


  private
  def user_params
    params.requare(:user).permit(:name, :email, :password, :password_confirmation)
  end
end

Flash mesajlarını saklamak için rails'in kendi yapısında bulunanActionDispatch::Flash::FlashHashsınıfından yararlanıyoruz. Bu sınıfımızdan oluşturacağımız flash nesnemiz tıpkı bir hash gibi davranır. yani mesajlarımızı key ve value olarak kaydetmemizi sağlar. sakladığı mesajı bir sonraki http isteğine kadar tutar ve görüntülenmenin hemen ardından da siler. Yukarıda kod’da bulunan

flash[:alert] = “could not creat account”

ifadesi zaten anlattığımız flash nesnesi oluyor. Gördüğün gibi alert key “could not create account” da value oluyor. Ve flash nesnesi hash gibi davranıp mesajımızı saklıyor.

Her şey iyi güzel de bu flash nesnesini biz ne controller’da oluşturduk ne view’da nereden geldi? Flash nesnesini manual. olarak oluşturmamıza gerek yoktur

Flash nesnemiz için üç metod’dan bahsedebiliriz

  • [] = mesaj atama için kullanılır
  • now = geçerli istekte mesajın hemen gösterilmeis gereken mesajı saklar.

Gördüğün üzere hazır sınıfımız sayesinde mesajlarımızı saklayabiliyoruz ancak bizim bunu kullanıcıya da görüntüleyebilmemiz gerekiyor. Görüntülemek için gereken metodları manual olarak kendimiz halledicez.

Flash mesaj view partı

Flash mesajlarımızı görüntülemek için gereken kodları app/views/layouts/application.html.erb dosyasının içine yazıcaz(partial bir dosyaya yazıp, partial dosyamızı bu dosyanın içine de gömebiliriz).

Neden böyle yapıyoruz? Flash mesajlarını görüntülemek için defalarca aynı od partına ihtiyaç duyacağız kod tekrarından kaçmak için defalarca kullancağımız kodları application.html.erb dosyasına yazar daha sonra bu sayfayı gereken file’ların içine gömeriz :)). Bu sadece flash mesajlara özel bir durum da değildir. application.html.erb dosyasını projemiz için genel bi şablon olarak kullanırız. Tekrar edecek sık kullacağımız kodaları buraya ekleriz. Daha sonraTüm controller’lar ve view’lar bu şablonun kullanır.

Aşağıda flash mesajları görüntülemek için kullacağımız kodlar bulunuyor.

<div class="flash-container" id='flash-container'>
  <%= flash.each do |message_type, message|%>
    <%= content_tag(:div, message, 
                    class: "alert flash-#{message_type}", 
                    id: 'flash') %>
  <%end%>
</div>

Üçüncü satırda content_tag var değişik bi arkadaş nedir, ne işe yarar, neden var dersen. Dostum content_tag bir rails helper(yardımcı) metodu. Bizim için istediğimiz html elemanını oluşturur. direkt normla div oluşturmak yerine bunu kullanma sebebimiz dinamik olarak id ve sınıf değerini değiştirebilmek.

Peki ya each nereden geldi? Belki aynı anda birden fazla flash mesajımız olabilir. Böyle bir durumda hiç birini kaçımayalım sırayla görüntüleyebilelim diye each kullanıyoruz.

Toparlarsak İç içe iki div oluşturuyoruz. Bunlardan dışarıdakinin sınıfını hemen flash-container olarak belirliyoruz ki flash-container isimli hazır css sınıfına ulaşabilelim, stil özelliklerini alalım. İçerideki div’in ise sınıfını ve mesaj içeriğini (each’i çalıştıran)flash nesnemizi içeriğine göre dinamik olarak ayarlıyoruz.

Özet

  • Flash mesajlar tıpkı fotğraf çekerken flashın patlaması gibi istediğimiz zaman kullanıcıya bilgi verme amaçlı gösterilir ve kendiğinden kaybolur.
  • Flash mesajı saklama kaydetme kısmı flash nesnemizin kendiliğinden yaptığı bir işlemdir.
  • Ancak görüntüleme kısmı için kod yazılmalıdır. Aksi takdirde mesaj saklansa dahi görüntülenemez.
  • flash nesnemizi kendimizin manuel olarak oluşturmasına gerek yoktur. ActionController::Flash modülü tarafından otomatik olarak oluşturulur ve yönetilir.
  • Flash mesajın silinmesi de otomatik olarak gerçekleşir.
  • Bir request-resppınse döngüsü içerinde kaydedilir. Sıradaki istek sırasında ortya çıkar ve silinir.

Zaman ayırıp okuduğunuz için teşekkür ederim. Umarım faydalı olmuştur :))


메타데이터
post_id
ce99243344df
slug
flash-mesajları-nedir-ce99243344df
url
https://medium.com/@gokcesoylu/flash-mesajlar%C4%B1-nedir-ce99243344df
canonical_url
https://medium.com/@gokcesoylu/flash-mesajlar%C4%B1-nedir-ce99243344df
author_url
https://medium.com/@gokcesoylu
status
ok
fetched_at
2026-06-17 18:46:00