如果用户在其个人资料页面中添加了指向图片的链接,我就会获得以下代码来更改页面的背景图片。但是,我希望将其应用于所有页面,而不仅仅是代码当前所在的页面。
我知道我可以单独将代码放在每个页面中,但这显然不太理想。我尝试将它放在application.js和application.html.erb文件中,但它没有用。
我认为它与gon有关,使这些变量只对他们所在的页面可用?
$(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 %>
答案 0 :(得分:0)
您可以尝试这样的方法,但是您必须确保@gon在任何地方都已定义,并且您所需的任何js库也已定义:
# 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