nil的未定义方法`coordinates':NilClass

时间:2013-06-05 15:43:02

标签: ruby-on-rails methods undefined null

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

  

nil的未定义方法`coordinates':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

任何帮助都会受到极大的关注。

2 个答案:

答案 0 :(得分:1)

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

@locations将返回[]

@ locations.first将返回nil

nil.coordinates引发未定义的方法`坐标'为零: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

答案 1 :(得分:1)

您尚未初始化@locations.first。该程序似乎试图访问不存在的东西的坐标(因此异常在nil:NilClass上)。