相同的谷歌地图代码适用于一个页面,而不是另一个页面



我正在使用Rails和Gmaps4rails gem。我在控制器中的两个操作上添加了地图。这是两者的代码。

def index
@clubs = policy_scope(Club)
@date = params[:date] || Date.today
@hash = Gmaps4rails.build_markers(@clubs) do |club, marker|
  marker.lat club.latitude
  marker.lng club.longitude
  # marker.infowindow render_to_string(partial: "/clubs/map_box", locals: { club: club })
end
end
def show_map
@club = Club.find(params[:id])
authorize @club
@hash = Gmaps4rails.build_markers(@club) do |club, marker|
  marker.lat club.latitude
  marker.lng club.longitude
  # marker.infowindow render_to_string(partial: "/clubs/map_box", locals: { club: club })
end
end

这是我的视图代码,它被添加到两个页面中,带有部分。

<div id="map" style="width: 50%; height: 400px;"></div>
<% content_for(:after_js) do %>
<%= javascript_tag do %>
$(document).ready(function() {
  var handler = Gmaps.build('Google');
  handler.buildMap({ internal: { id: 'map' } }, function() {
    markers = handler.addMarkers(<%= raw @hash.to_json %>);
    handler.bounds.extendWith(markers);
    handler.fitMapToBounds();
    if (markers.length == 0) {
      handler.getMap().setZoom(2);
    } else if (markers.length == 1) {
      handler.getMap().setZoom(14);
    }
  });
});

问题是地图出现在我的索引页面上,但没有出现在我的show_map页面上。这个想法是让show_map只显示带有一个俱乐部标记的地图。然而,奇怪的是,不管我做什么,我都无法show_map地图出现。

即使我在 index 方法和 show_map 方法中有完全相同的代码(我试图使两个方法相同以查看它是否有效(,它仍然无法在show_map视图中工作。

我在show_map视图页面中收到此错误:未捕获的类型错误:无法读取未定义的属性"lat"。

有没有人遇到过同样的问题?

我认为你必须给这个函数一个数组:

Gmaps4rails.build_markers(@club)

试试:

Gmaps4rails.build_markers([@club])

show_map操作

如果有人遇到同样的问题,我最终会继续前进并留待以后使用。我添加了 API 密钥以推送到生产环境,不知何故,一旦我这样做了,Google 地图就开始在每个页面上工作,而不仅仅是索引。希望这有帮助。

最新更新