0

我是 Rails 新手,并试图找出 Rails 2.3.14 站点的问题。问题是我正在尝试修复的这个商店定位器不断返回

nil:NilClass 的未定义方法“坐标”

当它在距离参数内找不到商店时。如果它找到一个,那么它工作正常。

这是我试图在我的控制器中使用的当前代码

  @map = GMap.new("locations-gmap-div", "locationsGMap")
  @map.control_init(:large_map => true, :map_type => true)
  @mapp.center_zoom_init(@locations.first.coordinates, 8)

这就是我试图用我的代码做的事情。我对 Rails 还是很陌生,所以如果我要离开这里,我很抱歉。

 @map = GMap.new("locations-gmap-div", "locationsGMap")
 @map.control_init(:large_map => true, :map_type => true)

if @map.center_zoom_init(@locations.first.coordinates,8).nil?
    flash[:error] = 'Sorry, we could not find any stores matching that criteria.'  
    redirect_to store_locator_path          
else
    @map.center_zoom_init(@locations.first.coordinates,8)

end

任何帮助将不胜感激。

4

2 回答 2

1

它失败了,因为@locations 是空的。

@locations 将返回 []

@locations.first 将返回 nil

nil.coordinates 为 nil:NilClass 引发未定义的方法“坐标”

if @locations.empty?
    flash[:error] = 'Sorry, we could not find any stores matching that criteria.'  
    redirect_to store_locator_path          
else
    @map = GMap.new("locations-gmap-div", "locationsGMap")
    @map.control_init(:large_map => true, :map_type => true)
    @map.center_zoom_init(@locations.first.coordinates,8)
end
于 2013-06-05T15:48:32.793 回答
1

你还没有初始化@locations.first。该程序似乎试图访问不存在的东西的坐标(因此为什么异常是 on nil:NilClass)。

于 2013-06-05T15:49:45.520 回答