【问题标题】:refer an precompiled asset in javascript + rails4在 javascript + rails4 中引用预编译资产
【发布时间】:2014-12-20 13:57:46
【问题描述】:

我有一个 rails 4 应用程序,我在其中使用 gmapjs 显示带有标记的地图。通过对 mouseover 事件进行 ajax 来检索每个标记的详细数据。我使用 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 是“window.location.href + data.logo.url”。我必须显示名为“logo_sm.png”的图像。它在开发中工作但在生产中失败,因为在资产预编译期间,它被重命名。

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

【问题讨论】:

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


    【解决方案1】:

    假设您正在资产中创建 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>'
    );
    

    【讨论】:

    • 我把文件名load_map.js改成了load_map.js.haml。获取 Sprockets::FileNotFound at / 找不到文件 'load_map'(在 /home/username/freelance/project/app/assets/javascripts/application.js:19)
    • HAML 真的是针对 HTML,我会尝试使用 ERB,因为我知道它有效。你是如何从你的 application.js 文件中引用它的
    • 我使用 //= 需要 load_map 来加载 application.js 中的 js 文件
    • 你可以试试.erb 版本。因为我不确定 haml 是否被添加到加载路径中。
    猜你喜欢
    • 1970-01-01
    • 2014-01-04
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多