Rails Verilerine Javascript Üzerinden Ulaşmak
Merhaba,
Bu yazımda sizlere Gon gem'inin kullanımı ve Rails ile Javascript kullanırken GON sayesinde Rails tarafından oluşturulan değişkenlerin Javascript tarafına nasıl aktarılacağını ve erişilebileceğini anlatmaya çalışacağım.
Javascript dosyasından HTML elementlerine herhangi bir veri içeriğini eklemek ve başka yerlerden erişmek için data
özelliği kullanılır.
Data ile HTML elemanlarına veriler ekler ve bu verilere erişme imkanı bulabiliriz.
Basit bir örnek kullanımı aşağıdaki gibidir;
index.html.haml dosyasında:
content_tag "div", id:"products", data: { url: products_url }
application.js.coffee dosyasında;
jQuery->
console.log $(‘#products’).data(‘url’)
Bu şekilde kullandığımızda konsola data-url değerini basacaktır.
Gon Gem
Gon gem'i, Rails değişkenlerinize javascript dosyalarınızdan erişmenizi sağlayan bir gem'dir.
Javascript dosyanızda kullanmanız gereken bir veri olduğunda bunu view dosyalarından parse etmek yerine bu gem sayesinde Rails verilerini kullanabileceğiniz işlerinizi kolaylaştıran bir araçtır.
Kullanımı:
Gemfile dosyasına;
gem ‘gon’
app/views/layouts/application.html.haml dosyasına head tagleri arasına;
= Gon::Base.render_data
Controller.rb dosyasına;
gon.your_variable = variable_value
Javascript dosyasından;
gon.your_variable
ile veriye erişebilirsiniz. İşte bu kadar.
Faydalı bir kullanımı da var. gon.watch
ile sayfayı yenilemeden tutulan veriyi güncelleyebiliyorsunuz.
gon.watch
kullanımı ise şu şekildedir;
normalde gon.your_variable şeklinde oluşturduğunuz değişkeni; gon.watch.your_variable
şeklinde oluşturuyorsunuz.
Daha sonra javascript dosyalarınızda aldığı bazı parametreler ile kullanabilirsiniz. Örneğin:
gon.watch(name_of_variable, options, callback)
parametreleri ile kullanılabilmektedir.
gon.watch('your_variable', interval: 1000, function_name)
- name_of_variable: controllerda tanımladığımız değişken
- options:
- interval: gon.watch için döngü oluşturmayı sağlar, döngü başarılı olduğunda callback çağrılır.
- method: ajax istekleri için method
- url: ajax istekleri için url
- callback: ajax isteği başarılı olduğunda çağırılacak olan fonksiyondur.
Rabl Gem
Rabl, json cevapları için bir gem'dir. Açılımı Ruby API Builder Language şeklindedir.
JSON ise verinin hızlı ve küçük boyutlarda erişimini sağlar. Bilindiği üzere JSON, xml’in javascript ile uyumlu ve daha hızlı kullanımını sağlayan bir alternatifidir.
Nasıl kullanılır?
Gemfile dosyasına;
gem ‘rabl’
eklenir.
JSON formatlı cevap dönmesini istediğimiz html sayfasının json.rabl uzantılı halini oluşturmalıyız. Örneğin index.html.haml sayfası için index.json.rabl dosyası oluşturmalıyız. Örnek kullanımı aşağıdaki şekildedir;
index.json.rabl dosyasına:
object @products
attributes :id,:name,:published_at
if current_user.admin?
node(:edit_url) { |product| edit_product_url(product) }
end
Rabl dosyalarını html içine gömerek kaynak kodda görüntüleyebiliriz. Bunu için;
#products{data: {articles: “ = render (template: ‘articles/index.json.rabl’)”}}
kodunu ekleyelim.
Gon geminin Rabl İle Kullanımı
Javascripte kullanmak istediğiniz veriyi rabl dosyasından çekebiliriz. Bunun için;
Index.json.rabl dosyası oluşturalım;
collection Product.limit(10)
attributes :id,:name,:price
Products_controller.rb dosyasında;
def index
gon.rabl “app/views/products/index.json.rabl” , as: “products”
end
Application.js.coffee dosyasına;
gon.products if gon
şeklinde kullanabiliriz.
Umarım bu yazım sizlere açıklayıcı ve ilgili araçların kullanımı ile ilgili fikir verici olmuştur.
İyi çalışmalar.
comments powered by Disqus