lab2023 - internet teknolojileri

Ruby on Rails'te Client Side Validasyon

Client Side validasyonlar için ClientSideValidations gemini kullanıyoruz. Simple Form ile çalışabilmesi içinde ClientSideValidationsSimpleForm gemini kullanıyoruz.

Kurulum

Gemleri Gemfile’ a ekleyip bundle install yapalım

1
2
gem 'client_side_validations'
gem 'client_side_validations-simple_form'

Daha sonra kurulum komutunu çalştıralım.

1
rails g client_side_validations:install

config/initializers/client_side_validations.rb başlangıç dosyasının eklendiğini görüyoruz.

Eğer istersek gem’ lerin kullandığı javascript dosyaların assets dizinin altına kopyalayabiliriz.

1
rails g client_side_validations:copy_assets

Kullanım

app/assets/javascripts/application.js dosyasında gerekli dosyaları çağıralım.

1
2
//= require rails.validations
//= require rails.validations.simple_form

Forma :validate => true parametresini geçiyoruz.

1
2
3
4
5
6
7
8
9
10
= simple_form_for(@product, :validate => true) do |f|
  = f.error_notification

  .form-inputs
    = f.input :title
    = f.input :price
    = f.input :status

  .form-actions
    = f.button :submit

Şimdide modele gidip validasyonları yazalım.

1
2
3
4
5
6
7
8
9
10
class Product < ActiveRecord::Base
  attr_accessible :price, :status, :title
  validates_presence_of :price, :title

  validates_length_of :title, :minimum => 5, :maximum => 10

  validates_numericality_of :price, :greater_than => 10, :less_than => 100

  validates_uniqueness_of :title
end

İstersek validasyonları form içinde tek bir input’ a da ekleyebiliyoruz.

1
= f.input :title, :validate => { :presence => true }

validates_presence_of validates_numericality_of validates_uniqueness_of

Son ekran görüntüsünde dikkat ettiyseniz ajax ile uniq olup olmadığını bile kontrol edebiliyor.

En kısa sürede lab2023 bünyesinde open-source olarak geliştirdiğimiz Rails Template’ e ekleyeceğiz. Issue’ yu girdim bile :)

İyi çalışmalar dilerim.