Ajax i google maps

Witam mam taki problem:
W pliku RJS chce zrobić update mapy.
Jednak efekt jest taki że powstaje puste miejsce o rozmiarach mapy, a samej mapy ni śladu.

widok

[quote]form_remote_tag :url => {:action => ‘poka’} do
text_field_tag :miasto2
submit_tag “Dodaj”, :onclick => “Element.hide(‘form_2’), Element.show(‘loading’)”
end

      <div id="mapa">
             render :partial => 'mapa'
      </div>[/quote]

partial mapa:

[quote]GMap.header
@map.to_html
@map.div(:width => 280, :height => 280)[/quote]
controller:

[quote]@location2 = params[:miasto2]
coordinates2 = GoogleGeocoder.geocode(@location2)
@map = GMap.new(“map”)
@map.control_init(:large_map => true,:map_type => false)
@map.center_zoom_init([coordinates2.lat, coordinates2.lng], 13)[/quote]
.rjs

inne rzeczy z partiala sie pokazuja ale mapa nie.
używam pluginów:
ym4r_gm
GeoKit
W czym jest problem?

Zainstaluj sobie Firebuga w firefoxie i zobacz jaki javascript generuje się w odpowiedzi na to zapytanie, możesz też tutaj wkleić, bo chętnie bym pomógł, ale nie mam czasu obczajania pluginu, którego używasz do map.

Przejrzyj moją prezentację. Co prawda nie jest on najświeższa, ale krok po kroku było tam napisane co trzeba zrobić.
Najlepiej zacząć w wersji bez Ajaxa i sprawdzić, czy działa.

Cześć.
Firebug pisze:

[quote]try {
Element.show(“distance”);
new Insertion.Bottom(“distance”, " ||\u003Cbr\u003E0.0 km.\u003Cbr\u003E||\u003Cbr\u003E");
new Insertion.Bottom(“distance”, " Kaczyce \u003Cbr\u003E");
Element.show(“form_2”);
Element.hide(“loading”);
new Insertion.Bottom(“mapa”, “\n\n \u003Cscript src=“http://maps.google.com/maps?file=api\u0026amp
;v=2.x\u0026amp;key=ABQIAAAAzMUFFnT9uH0xq39J0Y4kbhTJQa0g3IQ9GZqIMmInSLzwtGDKaBR6j135zrztfTGVOm2QlWnkaidDIQ
\u0026amp;hl=” type=“text/javascript”\u003E\u003C/script\u003E\n\u003Cscript src=”/javascripts/ym4r-gm
.js" type=“text/javascript”\u003E\u003C/script\u003E\n\u003Cstyle type=“text/css”\u003E\n v:* {
behavior:url(#default#VML);}\n\u003C/style\u003E\n \u003Cscript type=“text/javascript”\u003E
\nvar map;\nwindow.onload = addCodeToFunction(window.onload,function() {\nif (GBrowserIsCompatible()
) {\nmap = new GMap2(document.getElementById(“map”));\nmap.setCenter(new GLatLng(50.7260568,21.4030244
),13);map.addControl(new GLargeMapControl());\n}\n});\n\u003C/script\u003E\n \u003Cdiv id=“map
" style=“width:280px;height:280px” \u003E\u003C/div\u003E\n\n\n”);
} catch (e) { alert(‘RJS error:\n\n’ + e.toString()); alert(‘Element.show(“distance”);\nnew Insertion
.Bottom(“distance”, " ||\u003Cbr\u003E0.0 km.\u003Cbr\u003E||\u003Cbr\u003E");\nnew Insertion
.Bottom(“distance”, " Kaczyce \u003Cbr\u003E");\nElement.show(“form_2”);\nElement.hide(“loading
“);\nnew Insertion.Bottom(“mapa”, “\n\n \u003Cscript src=\“http://maps.google.com/maps
?file=api\u0026amp;v=2.x\u0026amp;key=ABQIAAAAzMUFFnT9uH0xq39J0Y4kbhTJQa0g3IQ9GZqIMmInSLzwtGDKaBR6j135zrztfTGVOm2QlWnkaidDIQ
\u0026amp;hl=\” type=\“text/javascript\”\u003E\u003C/script\u003E\n\u003Cscript src=\”
/javascripts/ym4r-gm.js\” type=\“text/javascript\”\u003E\u003C/script\u003E\n\u003Cstyle type
=\“text/css\”\u003E\n v:* { behavior:url(#default#VML);}\n\u003C/style\u003E\n \u003Cscript
type=\“text/javascript\”\u003E\nvar map;\nwindow.onload = addCodeToFunction(window.onload,function
() {\nif (GBrowserIsCompatible()) {\nmap = new GMap2(document.getElementById(\“map\”));\nmap.setCenter
(new GLatLng(50.7260568,21.4030244),13);map.addControl(new GLargeMapControl());\n}\n});\n\u003C/script
\u003E\n \u003Cdiv id=\“map\” style=\“width:280px;height:280px\” \u003E\u003C/div
\u003E\n\n\n”);’); throw e }[/quote]
Wszystko działa (distance) oprócz mapy
Szczerze nie znam się na javascripcie.
Więc może tu jest gdzieś błąd.
Logi są w porządku.
Bez ajaxu wszystko działa poprawnie.

pozdrawiam

page.insert_html :bottom, :mapa, :partial => ‘mapa’, :object => @map

a czy nie powinno byc tam jakos tak? nie pamietam za abrdzo skladni, ale jak robisz update to chyba replace a nie insert, wtedy :bottom wywalic :mapa to id jakiegos div pewnie wiec tam ma byc a partial chyba tez ok, nie wiem czy nie wystarczy :partial => @map ale to juz malo wazne

page.replace_html :mapa, :partial => @map

nie działa, log: Couldn’t find template file for ym4r/gm_plugin/g_maps/_g_map

próbowałem insert i replace i nic.

Tak jakby nie chciały się odpalić skrypty zawarte w partialu mapa (bo przesłane są jak widać po raporcie Firebuga)

z render :partial => ‘mapa’ w kontrolerze.

Też nie działa

log: Couldn’t find template file for ym4r/gm_plugin/g_maps/_g_map

czy tu nie pisze dla ciebei co jest nie tak?