Javascript 如果用户提供链接,请更改身体的背景图像

Javascript 如果用户提供链接,请更改身体的背景图像,javascript,jquery,ruby-on-rails,ruby-on-rails-4,Javascript,Jquery,Ruby On Rails,Ruby On Rails 4,我已经创建了一个表单来存储用户背景图片的url,如果他们想更改默认图像。我正在使用gon gem使其可用于Javascript。我试图让它工作,这样,如果用户在他们的背景图片数据库列中有一个链接,它应该应用于身体的背景图像元素,对于那些没有它的人应该有默认的图像 我已经设法更改了完成表单的用户的背景图像,但是对于其他用户,它没有显示默认图像。这就是我所做的,让它对数据库中有链接的用户起作用 index.html.erb <% if current_user.background_pictu

我已经创建了一个表单来存储用户背景图片的url,如果他们想更改默认图像。我正在使用gon gem使其可用于Javascript。我试图让它工作,这样,如果用户在他们的背景图片数据库列中有一个链接,它应该应用于身体的背景图像元素,对于那些没有它的人应该有默认的图像

我已经设法更改了完成表单的用户的背景图像,但是对于其他用户,它没有显示默认图像。这就是我所做的,让它对数据库中有链接的用户起作用

index.html.erb

<% 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 + ")";
    };      
}); 

我的问题基本上是,如果用户的背景图片字段为空,我如何让它显示css文件中的默认背景图片?

在if语句中
if(gon.backgroundPicture!==”)
,如果
gon.backgroundPicture
未定义,它将计算为
true
,我认为这不是你想要的

您可以在javascript中更改if语句,也可以在视图中设置默认值

试试这个:

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

将整个脚本移动到if块中,并更改条件以检查是否存在图像

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

$(文档).ready(函数(){
document.body.style.backgroundImage=“url”(“+”);
});

为什么不只是将该图片设为默认图片,而是使用
可见性:隐藏
的样式,并在脚本中“显示”它,而您可以用它来替换
gon.backgroundPicture
?我已经尝试将其他各种语句添加到if语句中,但都不起作用,请您详细说明答案?
<% if current_user.background_picture.present? %>
  $(document).ready(function() {
    document.body.style.backgroundImage = "url(" + <%= current_user.background_picture %> + ")";
  });
<% end %>