Problem with RJS

Hi,

I am trying to do a rails application that uses google map to allow users to specify longitude and latitude and then the google map should be updated to show that location which was specified.

I am using observe_field on the text field like this:

        <%= observe_field 'geo_loc_cords',         :url => {:action => :update_map, :form_authenticity_token => form_authenticity_token},         :update => :map,         :with => '"cords="+element.value',         :loading => "Element.show('spinner')",         :complete => "Element.hide('spinner')" %>

and my map div looks like this:

<%= @map.div(:width => 400, :height => 300) %>

and in the update_map action I have this (hardcoded the coordinates for now):

  def update_map()     latitude = 43.023849     longitude = -77.682053     @map = Variable.new("map")

    point = GLatLng.new([latitude, longitude])     @marker = GMarker.new(point, {:title => "Site:", :info_window => "Site:",                         :draggable => true})     respond_to do |format|       format.html       format.js     end   end

And my rjs template simply looks like this:

page << @map.clear_overlays page << @map.add_overlay(@marker)

Yet the result is simply outputted on the page as:

try { map.clearOverlays(); map.addOverlay(addInfoWindowToMarker(new GMarker(new GLatLng(43.023849,-77.682053),{title : "Site:",draggable : true}),"Site:",{})); } catch (e) { alert('RJS error:\n\n' + e.toString()); alert('map.clearOverlays();\nmap.addOverlay(addInfoWindowToMarker(new GMarker(new GLatLng(43.023849,-77.682053),{title : \"Site:\",draggable : true}),\"Site:\",{}));'); throw e }

What am I doing wrong to make the resulting javascript outputted on the page rather than interpreted as javascript?

Shahin Kordasti wrote:

Hi,

I am trying to do a rails application that uses google map to allow users to specify longitude and latitude and then the google map should be updated to show that location which was specified.

I am using observe_field on the text field like this:

        <%= observe_field 'geo_loc_cords',         :url => {:action => :update_map, :form_authenticity_token => form_authenticity_token},         :update => :map,         :with => '"cords="+element.value',         :loading => "Element.show('spinner')",         :complete => "Element.hide('spinner')" %>

and my map div looks like this:

<%= @map.div(:width => 400, :height => 300) %>

. . .

What am I doing wrong to make the resulting javascript outputted on the page rather than interpreted as javascript?

Solved it, just needed to remove the :update => :map in observe field. :slight_smile: