应用程序范围的rails变量为javascript

时间:2016-04-14 16:10:07

标签: javascript jquery ruby-on-rails ruby-on-rails-4

如果用户在其个人资料页面中添加了指向图片的链接,我就会获得以下代码来更改页面的背景图片。但是,我希望将其应用于所有页面,而不仅仅是代码当前所在的页面。

我知道我可以单独将代码放在每个页面中,但这显然不太理想。我尝试将它放在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 %>

1 个答案:

答案 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