我正在试图弄清楚如何在我的rails 4 app中设置我的gmaps4rails。
我有称为地址,项目和简介的模型。
协会是:
地址
belongs_to :addressable, :polymorphic => true
资料
has_many :addresses, as: :addressable
accepts_nested_attributes_for :addresses, reject_if: :all_blank, allow_destroy: true
项目
has_many :addresses, as: :addressable
accepts_nested_attributes_for :addresses, reject_if: :all_blank, allow_destroy: true
我在项目和配置文件脚手架中都有相同的设置。当我在配置文件脚手架中填写地址表单时,配置文件视图会正确呈现地图。
当我在项目脚手架中执行以下操作(这反映了我在配置文件脚手架中所做的事情)时,我得到一个空白的空白区域,其中应该有一个地图。
项目管理员:
def show
@invite = Invite.new
@project = Project.find(params[:id])
@addresses = @project.addresses
@hash = Gmaps4rails.build_markers(@addresses) do |address, marker|
marker.lat address.latitude
marker.lng address.longitude
marker.infowindow address.full_address
end
这在配置文件控制器中都是一样的,除了它要求@ profile.addresses而不是@project.addresses(并且在配置文件视图中一切正常。
end
# GET /projects/new
def new
@project = Project.new
@project.addresses.build
end
# GET /projects/1/edit
def edit
@project.addresses_build unless @project.addresses
end
在项目视图中部分:
<script src="//maps.google.com/maps/api/js?v=3.18&sensor=false&client=&key=&libraries=geometry&language=&hl=®ion="></script>
<div style='width: 800px;'>
<div id="map" style='width: 800px; height: 400px;'></div>
</div>
<script>
handler = Gmaps.build('Google');
handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){
markers = handler.addMarkers(<%=raw @hash.to_json %>);
handler.bounds.extendWith(markers);
handler.fitMapToBounds();
handler.getMap().setZoom(8);
});
</script>
当我在chrome中检查元素时,在项目视图中,我可以看到map有一个div标签,我可以看到脚本中填充了一个地址(如下)
handler = Gmaps.build('Google');
handler.buildMap({ provider: {}, internal: {id: 'map'}}, function(){
markers = handler.addMarkers([{"lat":-33.858296,"lng":151.193575,"infowindow":"15 Pitt Street\u003cbr\u003eSydney NSW 2000\u003cbr\u003eAustralia"}]);
handler.bounds.extendWith(markers);
handler.fitMapToBounds();
handler.getMap().setZoom(8);
});
任何人都可以看到这出错的地方吗?