0

我有一张地图,上面有基于美国状态的标记。每个州有 n 个城市。

我有一个状态模型、控制器和城市模型、控制器。

当我单击州的标记时,我希望城市列表显示在信息窗口中。

所有这些信息都出现在主页上。

这是我到目前为止所做的:-

home_controller.rb

def index
    @states = State.all.to_gmaps4rails do |state,marker|
        marker.infowindow render_to_string(:partial => "/states/gmaps4rails_infowindow", :locals => {:object => state})
        marker.json({:id => state.id})
    end
end

主页/index.html.haml

=gmaps({"map_options" =>{ "auto_zoom" => false, "zoom" => 3}, "markers" => { "data" => @states } })

state_controller.rb

def gmaps4rails_infowindow
  @state = Gmaps.map.markers
end

状态/_gmaps4rails_infowindow.html.haml

=@state.cities.each do |city|
    =city.name

不用说它不起作用。有人可以帮我吗?

4

1 回答 1

1

嗯,你home_controller.rb的很好。你在这里写你想使用一个局部变量名为object.

在部分本身中,您编写:

=@state.cities.each do |city|
  =city.name

实例变量没有在那里定义,你在上面定义了一个局部变量。

用。。。来代替:

=object.cities.each do |city|
  =city.name

从那里它应该工作。


注意:

def gmaps4rails_infowindow
  @state = Gmaps.map.markers 
end

是:

  • 没用:你在控制器中定义信息窗口

  • 错误:Gmaps.map.markers仅作为 js 变量存在

于 2012-05-12T11:42:42.143 回答