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

home / 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

States / _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.markersjs 変数としてのみ存在します

于 2012-05-12T11:42:42.143 に答える