在javascript + rails 4中引用预编译的资产

时间:2014-12-20 13:57:46

标签: image ruby-on-rails-4 asset-pipeline

我有一个rails 4应用程序,我在其中使用gmapjs来显示带有标记的地图。通过在mouseover事件上创建ajax来检索每个标记的详细数据。我使用infoWindow来显示细节。我必须在每个infoWindow中显示应用程序徽标。

infowindow代码如下:

a.infoWindow.setContent('<div id="hover'+item.id+'" tabindex="-1" role="dialog">'+
  '<img src="'+logo_path+'" class="Image">' + 
  '<div class="cmp_name">' +
  data.name +
  '</div>' +
  '<div class="col-sm-4">' +
  '<img src="'+window.location.href+'/assets/logo_sm.png" class="pull-right">'
  '</div>' +
  '</div>'
);

这里logo_path是&#34; window.location.href + data.logo.url&#34;。我必须显示名为&#39; logo_sm.png&#39;的图像。它在开发中工作但在生产中失败,因为在资产预编译期间,它已重命名。

在javascript中引用要​​预编译的图像的理想方法是什么?

1 个答案:

答案 0 :(得分:0)

假设您在资产中创建了javascript(例如在maps.js中)

您应该能够使用erb,即maps.js.erb,然后使用image_url ||构建字符串image_path例如。

a.infoWindow.setContent('<div id="hover'+item.id+'" tabindex="-1" role="dialog">'+
  '<img src="'+logo_path+'" class="Image">' + 
  '<div class="cmp_name">' +
  data.name +
  '</div>' +
  '<div class="col-sm-4">' +
  '<img src="<%= image_url('logo_sm.png')%>" class="pull-right">'
  '</div>' +
  '</div>'
);