ruby-on-rails 在Rails 7中通过importmaps导入谷歌Map

kpbwa7wx  于 2023-02-20  发布在  Ruby
关注(0)|答案(1)|浏览(180)

在Rails 7中通过导入Map加载GoogleMaps的方法是什么?
我见过有人通过script-tag导入它,如下所示:
<script src="https://maps.googleapis.com/maps/api/js?key=<%= Rails.application.credentials[:p10_google_maps_js_api_key] %>&callback=initMap" async defer data-turbolinks-eval="false"></script>
但我想利用Rails 7的新导入Map特性。不幸的是,我不明白如何在不将initMap回调用作脚本的情况下触发它。

jchrr9hc

jchrr9hc1#

因此,有一个Stimulus组件可以使用stimulus-places-autocomplete,但是,您可以轻松地自己实现它,从而保存引入依赖项的麻烦。
在一天结束的时候,google回调函数需要被触发。大多数解决这个问题的方法是创建一个事件并将其附加到窗口。然后你添加一个data-action到你的视图控制器div,它将寻找这个事件并触发它自己的回调函数。这个回调函数是你的Stimulus控制器本身的初始化器。

######### 地点_控制器.rb##########

import { Controller } from "@hotwired/stimulus";

export default class extends Controller {
  static targets = ["street", "city", "state", "zip"];

  connect() {
    // Can also initialize this with a CustomEvent
    const event = new Event('google-maps-callback', {
      bubbles: true,
      cancelable: true,
    })
    window.dispatchEvent(event);
  }

  // additional actions
}

########## 索引.html.erb##########

<div
  data-controller="places"
  data-action="google-maps-callback@window->places#initMap"
>
  <%# view code here %>
</div>

这仍然不是一个我喜欢的解决方案,但是,这是我们目前的变通办法。

相关问题