2016-04-14 8 views
0
için uygulama geniş raylar

Kullanıcı sayfanın profil sayfasından bir bağlantı eklediyse, bir sayfanın arka plan resmini değiştirmek için aşağıdaki kodu kullanıyorum. Bununla birlikte, bu kodun şu anda içerdiği kodun yerine tüm sayfalara uygulanmasını isterim.javascript

Kodu her sayfada tek tek koyabildiğimi biliyorum, ancak bu kesinlikle ideal değil. Bunu application.js ve application.html.erb dosyalarına yerleştirmeyi denedim, ancak çalışmadı.

Bu değişkenlerin yalnızca bulundukları sayfaya erişebilmesinin bir anlamı olduğuna inanıyorum?

$(document).ready(function(){ 
    if(gon.backgroundPicture) { 
     var background = gon.backgroundPicture; 
     document.body.style.backgroundImage = "url(" + background + ")"; 
    };  
}); 

<% if current_user.try(:student?) || current_user.try(:supervisor?) %> 
    <% if current_user.background_picture != :null %> 
    <% @gon.backgroundPicture = current_user.background_picture %> 
    <% end %> 
<% end %> 

cevap

0

Böyle bir şey deneyebilirsiniz, ancak her yerde tanımlanan emin @gon yapmak gerekecek ve ihtiyacınız herhangi js kütüphanesi de tanımlandığını:

# assets/javascripts/background_picture.js.erb

$(document).ready(function(){ 
    if(gon.backgroundPicture) { 
     var background = gon.backgroundPicture; 
     document.body.style.backgroundImage = "url(" + background +  ")"; 
    };  
}); 

<% if current_user.try(:student?) || current_user.try(:supervisor?) %> 
    <% if current_user.background_picture != :null %> 
    <% @gon.backgroundPicture = current_user.background_picture %> 
    <% end %> 
<% end %> 

# assets/javascripts/application.js

//= require background_picture

+0

wo değil mi rk, "Sınıf için tanımlanmamış yerel değişken veya yöntem current_user" yazıyor – Yoklan