javascript可以';找不到图像文件(Rails 4应用程序)
我有一个RubyonRails4应用程序。在javascript可以';找不到图像文件(Rails 4应用程序),javascript,ruby-on-rails,image,google-maps,asset-pipeline,Javascript,Ruby On Rails,Image,Google Maps,Asset Pipeline,我有一个RubyonRails4应用程序。在app/assets/javascripts中,我创建了一个文件map.js,在谷歌地图上绘制一些自定义标记: var marker = new google.maps.Marker({ draggable: false, title: 'Hi', icon: 'icon1.png' }); 一切正常,只是它找不到icon.png,并给我错误消息ActiveRecord::RecordNotFound(找不到id=icon1的用户)。问题
app/assets/javascripts
中,我创建了一个文件map.js
,在谷歌地图上绘制一些自定义标记:
var marker = new google.maps.Marker({
draggable: false,
title: 'Hi',
icon: 'icon1.png'
});
一切正常,只是它找不到icon.png
,并给我错误消息ActiveRecord::RecordNotFound(找不到id=icon1的用户)
。问题很可能是如何写入文件地址,因为如果我将代码更改为icon:'https://maps.google.com/mapfiles/kml/shapes/schools_maps.png“
一切都很完美,它在地图上显示了标记。
我怎样才能找到解决问题的方法?我查看了log/development
,但没有发现任何有用的东西。
我应该把icon1.png放在哪里?应该如何引用它的地址
请注意,我不能在map.js
中使用rails助手等
非常感谢。如果您想在js文件中使用图像,那么首先您必须将js文件更改为
maps.js.erb
,然后您可以访问允许您访问图像的资产,因此您可以将其保存在js文件中
var marker = new google.maps.Marker({
draggable: false,
title: 'Hi',
icon: "<%= asset_path('icon1.png') %>" //this will look for an image "icon1.png" in assets/images
});
var marker=new google.maps.marker({
可拖动:错误,
标题:"嗨",,
图标:“”//这将在资源/图像中查找图像“icon1.png”
});
编辑:
基本上是连接资源,这可以减少浏览器发出的请求数量。如果你看一下导轨,它会说
Sprockets将所有JavaScript文件连接到一个master.js文件中,并将所有CSS文件连接到一个master.CSS文件中。Rails在每个文件名中插入MD5指纹,以便web浏览器缓存该文件
因此,您不能通过静态url指定资产路径,因此我们使用rails asset\u path
,这将为您的资产创建合适的url您可以尝试使用gem
在application.js中
//= require app_assets
此指令在全局范围中添加方法资产路径
添加到过滤器文件*.png
。为此,请添加初始化器:
# config/initializers/js_assets.rb
JsAssets::List.allow << '*.png'
谢谢那么,在不更改为
.js.erb
的情况下,是否有任何方法可以做到这一点?是否存在任何不利因素(性能、速度等较低)要在app/assets/javascripts
中使用.js.erb
?@user2725109更新了我的答案,我们也使用了
,因此这将在你的app/assets/images
中查找图像icon1.png
,而不是图标.png
,非常感谢你的帮助和解释。谢谢。@user2725109很高兴我能帮助你:)
var marker = new google.maps.Marker({
draggable: false,
title: 'Hi',
icon: asset_path('icon1.png')
});