2011-07-19 40 views
1

我想知道如何從我的模型中獲取ID字段以傳入我在單擊標記時調用的JavaScript。如何獲得id字段併發送到視圖

我的模型:

acts_as_gmappable :process_geocoding => false, :lat => "lat", :lng => "lon" 

我控制器

def index 
    @locales_markers = Locale.all.to_gmaps4rails 
    respond_to do |format| 
     format.html { render :layout => false } 
    end 
end 

我查看

<%= gmaps("markers" => { "data" => @locales_markers } %> 

<% content_for :scripts do %> 
    <script> 
     Gmaps4Rails.callback = function() { 
      for (var i = 0; i < this.markers.length; ++i) { 
       google.maps.event.addListener(Gmaps4Rails.markers[i].serviceObject, 'click', function(){ 
        $('#info').load('/messages/' **<HERE I'D LIKE TO PASS THE ID>**); 
        $('#info').dialog("open"); 
       }); 

      } 
     }; 
    </script> 
<% end %> 

感謝, 盧西亞諾

回答

1

每個標記屬性存儲,並且可以被檢索。

在您的例子,簡單地做:

$('#info').load('/messages/' + Gmaps4Rails.markers[i].id); 

編輯:

你應該創建另一個js函數:

custom_listener = function(the_id) { 
    return function(){ 
     $('#info').load('/messages/' + the_id); 
     $('#info').dialog("open"); 
    }; 
}; 

,並調用它是這樣的:

Gmaps4Rails.callback = function() { 
for (var i = 0; i < this.markers.length; ++i) { 
    google.maps.event.addListener(Gmaps4Rails.markers[i].serviceObject, 'click', custom_listener(Gmaps4Rails.markers[i].id)); 
    } 
}; 
+0

我已經試過這種方式並且發生了他的錯誤:** Gmaps4Rails.markers [i]未定義**。 我相信這是因爲變量的上下文而發生的。 –

+0

非常感謝,工作得很好!歡迎使用 –

+0

;) – apneadiving

1

我改變了我的controlle r到:

def index 
    @locales_markers = Locale.all.to_gmaps4rails do |locale| 
     "\"id\": \"#{locale.id}\"" 
    end 
    respond_to do |format| 
     format.html { render :layout => false } 
    end 
    end 

和工作正常,但是,我無法獲得視圖中的id值。

如何解決?

謝謝, 盧西亞諾

相關問題