addMarkers(@marker)不适用于动态内容

时间:2011-12-25 00:08:06

标签: ruby-on-rails ruby-on-rails-3 gmaps4rails

我是一名亲戚,但在我的项目中集成gmaps4rails非常有趣。我遇到了一个可能是宝石中的错误的问题,或者它可能只是我的无知,但我希望有人可以指出我正确的方向。

我有一个包含jquery tab ui元素的主页。一个选项卡包含故事的列表视图,第二个选项卡包含这些故事的地图视图。我在地图视图中使用gmaps4rails。

在页面上重新加载符合我的搜索条件的所有故事都会出现在我的列表视图和地图视图中。当我尝试使用Gmaps.map.addMarkers()时出现问题。

假设我添加了一个符合我的搜索参数的新故事。我的故事#create action按预期设置@story变量,然后按如下方式设置@marker变量:

@markers = @story.to_gmaps4rails

然后我的create.js.erb视图将@story适当地插入到我的列表选项卡视图中。不幸的是,Gmaps.map.addMarkers(@marker)不会将标记插入地图选项卡视图。

以下是一些更相关的代码:

story.rb:

class Story < ActiveRecord::Base

  acts_as_api
  acts_as_gmappable :process_geocoding => false

  def gmaps4rails_marker_picture
    {
      "rich_marker" => "<div class='story_marker' id=marker_for_story_#{self.id }  ><img height='30' width='30' src='http://farm4.static.flickr.com/3212/3012579547_097e27ced9_m.jpg'/></div>"
    }
  end

create.js.erb:

$("#stories_list").prepend("<%=raw escape_javascript(render(@story)) %>");  //put new story in list view
<%= logger.debug("!!!!!!!!!! gmaps json array: #{@marker}")%> 
Gmaps.map.addMarkers(@marker); 

home.html.erb:

<div id="map-tab">
    <%= yield :head %>  <!-- for gmaps4rails -->
    <%= gmaps("markers" => { "data" => @json, "options" => { "clusterer_gridSize" => 5, "clusterer_maxZoom" => 13 } }) %>
</div>

当我在调用create.js.erb后检查控制台时,我看到@marker确实包含正确的json数组信息。我可以直接从控制台复制该信息,然后使用firebug控制台运行addMarkers(复制的json数组信息),标记按预期显示。另外,我可以修改create.js.erb文件中的addMarkers命令,看起来如下所示,它也有效:Gmaps.map.addMarkers([{"lng": "<%=@story.longitude%>", "lat": "<%=@story.latitude %>"}]); 但是,我宁愿使用to_gmaps4rails帮助器。

感谢您的帮助,您可以帮我解决这个谜团和节日快乐!

1 个答案:

答案 0 :(得分:0)

我想你应该简单地替换:

Gmaps.map.addMarkers(@marker); 

使用:

Gmaps.map.addMarkers(<%= @marker %>);