2011-10-31 75 views
1

我有一個視圖爲特定的分區生成地圖(可在@district中使用)。我的地圖繪製代碼是每個頁面都可以使用的coffeescript,但它需要將數據作爲一組json文件(district1.json,district2.json等)提供。我得到這個工作的第一種方法是在我的視圖中加載這個變量,使它成爲全局可用的。將javascript數據從視圖傳遞到coffeescript函數

 
# in my view 
<script type="text/javascript"> 
    var d_data = <%= render file: "#{Rails.root}/data/district_data/#{@district}.json" %> 
</script> 

然後我用下面的CoffeeScript接受這個全局變量:

 
$(document).ready -> 
    if $("#users-district-display") 
    myLatLng = new google.maps.LatLng(d_data.centroid.lat,d_data.centroid.lon) 

這非常適用於這個頁面,但我現在沒有定義d_data所有頁面拋出錯誤。另外,我在mysite.com/district_data中提供了這些json文件,並且正在考慮使用.get從ajax中引入數據(並讓視圖快速加載),但我仍然需要在那裏使用@district參數。

我知道我可以將js渲染爲一個部分,並且要這樣做,除非我能找到一種方法來製作此coffeescript。

任何想法讚賞。

問候,

回答

1

爲什麼你不只是檢查,看看是否該數據被定義?

$(document).ready -> 
    if $("#users-district-display") and d_data 
    myLatLng = new google.maps.LatLng(d_data.centroid.lat,d_data.centroid.lon) 

另外,如果你想創建一個新的LatLng對象,具有零個參數,你可以隨時使用存在運算符(?):

$(document).ready -> 
    if $("#users-district-display") 
    myLatLng = new google.maps.LatLng(
     d_data?.centroid.lat || 0 
     d_data?.centroid.lon || 0 
    ) 
+0

優秀的,謝謝 – bonhoffer