我有一个为特定区域生成地图的视图(在@district中可用)。我的地图绘图代码是coffeescript可用于每个页面,但它需要数据作为一组json文件(district1.json,district2.json等)。我得到这个工作的第一种方法是在我的视图中加载这个变量,使其全局可用。
# 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有效,否则我会这样做。
任何想法都赞赏。
此致
添
答案 0 :(得分: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
)