【发布时间】:2020-03-21 08:53:57
【问题描述】:
我正在尝试让我以前与早期版本的 Rails 一起使用的 Google Maps 设置使用 Rails 6 显示。显然 Rails 6 现在使用 webpack 来处理 javascript 资产,我无法让我的应用程序识别 Gmaps用于渲染地图的函数。
一些基础知识:
宝石文件
gem 'geocoder'
gem 'gmaps4rails'
gem 'underscore-rails'
# maybe don't need ^ this underscore gem anymore
我用yarn add underscore 安装了下划线,还添加了谷歌地图脚本gmaps_google.js,当前位于 vendor/javascripts 文件夹下,该文件夹已添加到我在 webpacker.yml `app/javascript/packs/application.js 文件中的解析路径中喜欢:
require("@rails/ujs").start()
require("@rails/activestorage").start()
require("channels")
require("gmaps_google")
import "bootstrap";
import 'underscore'
import "../stylesheets/application";
window.jQuery = $;
window.$ = $;
这是我实际的 show.html.erb 视图和地图的尝试加载
<div style='width: 800px;'>
<div id="map" style='width: 800px; height: 400px;'></div>
</div>
<script>
const handler = Gmaps.build('Google');
handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){
markers = handler.addMarkers([
{
"lat": <%= @user.latitude %>,
"lng": <%= @user.longitude %>,
"infowindow": "<%= @user.full_name %>'s location"
}
]);
handler.bounds.extendWith(markers);
handler.fitMapToBounds();
handler.getMap().setZoom(17);
});
</script>
但我仍然没有在页面上加载地图,出现错误提示
Uncaught ReferenceError: Gmaps is not defined
它确实加载了,当我从我的 HTML 头中的外部 CDN 源加载 gmaps 脚本时,错误消失了,正如这个问题所暗示的那样:Gmaps is not defined
所以这显然只是 google_maps.js 脚本的加载/可用性。文件太大,无法在此处显示,但这里是工作 CDN 版本的链接:cdn.jsdelivr.net/gmaps4rails/2.1.2/gmaps4rails.js
将其复制粘贴到我的 google_maps.js 文件中并没有帮助。而且我试图弄清楚如何让它与驻留在我的 Rails 应用程序中的 Google Maps 脚本一起工作,而 webpack Rails 6 世界对我来说仍然很新。任何建议将不胜感激。
【问题讨论】:
标签: ruby-on-rails google-maps webpack ruby-on-rails-6