2016-04-14 40 views
0

Bir kullanıcının arka plan resminin URL'sini varsayılan görüntüden değiştirmek istiyorsa saklamak için bir form oluşturdum. Javascript için kullanılabilir hale getirmek için gon gem kullanıyorum. Bir kullanıcı kendi background_picture veritabanı sütununda bir bağlantı varsa, vücudun arka plan görüntüsü elemanına uygulanmalı ve bunu yapmamış olanlar için varsayılan görüntüye sahip olacak şekilde çalışmayı denemeye çalışıyorum.Kullanıcı bağlantı verirse, arka plan resmini değiştirin Arka plan resmi

Formu gerçekleştiren kullanıcının arka plan görüntüsünü değiştirmeyi başardım, ancak diğer kullanıcılar için varsayılan olanı göstermiyor. Bu, veritabanındaki bağlantıyı kullanarak kullanıcı üzerinde çalışmak için yaptım.

Ben başka bir kullanıcı olarak giriş yaparsanız ben konsolunda bu hatayı alıyorum

<% if current_user.background_picture != :null %> 
    <% @gon.backgroundPicture = current_user.background_picture %> 
<% end %> 

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

,, her şey varsayılan arka plan görüntü haricinde normal çalışır index.html.erb orada

Started GET "/null" for 127.0.0.1 at 2016-04-14 02:07:04 +0100 
ActionController::RoutingError (No route matches [GET] "/null"): 
değil

Sorum şu temelde, kullanıcının arka plan resmi alanı boşsa, temel arka plan görüntüsünü css dosyasındaki gibi nasıl görüntüleyebilirim? gon.backgroundPictureundefined ise açıklamada if(gon.backgroundPicture !== "") eğer, ben sanmıyorum ki, true değerlendirecek senin içinde

+0

Neden sadece o resim varsayılan ama 'görünürlük bir stil ile yapmak: hidden' ve aksi takdirde' gon.backgroundPicture' yerine ne zaman senin senaryoya "açığa"? – Robusto

+0

if ifademde çeşitli başka ifadeler eklemeyi denedim ama hiçbiri işe yaramadı, cevabınız ayrıntılı olabilir mi lütfen? – Yoklan

cevap

0

istediğiniz şeydir.

Javascript'teki if ifadesini değiştirebilir veya görünümünüze varsayılan bir değer ayarlayabilirsiniz.

bu deneyin:

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

Bu, size teşekkür etti. – Yoklan

0
eğer bloğun içine tüm senaryoyu Taşı ve görüntünün varlığı için kontrol etmek koşulu değiştirmek

.

<% if current_user.background_picture.present? %> 
    $(document).ready(function() { 
    document.body.style.backgroundImage = "url(" + <%= current_user.background_picture %> + ")"; 
    }); 
<% end %>