0

提前感谢您提供的任何帮助!

对于我的 Ruby on Rails 网站(1.8.7、2.3.15),我正在尝试从 MySQL 表中提取数据,但遇到了“未定义方法”错误。我使用此代码的目标是显示属于某个纬度和经度范围内的所有位置的文本列表。

生产日志:

ActionView::TemplateError (undefined method `each' for nil:NilClass) on line #31 of     app/views/its/map.html.erb:
28: <!-- TestingLocations -->
29: 
30: <ul id="locations">
31: <% for masterlocation in @nearbylocations %>
32:     <li><%= masterlocation.nickname %></a></li>
33: <% end %>
34: </ul>

地图控制器:

def map
@its = Its.find(params[:id])
if @its.user_id == current_user.id
@locations = Location.find(:all, :conditions => ["its_id = ?", params[:id]], :order => "order_num asc")
@mapscount = Saved.count(:all, :conditions => ['its_id = ?', params[:id]])
#@date_filter = Date.civil(params[:date_filter].values_at(:year, :month, :day))
#    debugger
respond_to do |format|
format.html # map.html.erb
format.xml  { render :xml => @its }
end
else
redirect_to '/'

@nearbylocations = Masterlocation.find(:all, :conditions => ["latitude > 25 AND latitude < 30 AND longitude > -75 AND longitude < -70", params[:id]], :order => ['nickname asc'])
end

再次感谢您的帮助!

4

3 回答 3

0

发生这种情况@nearbylocationsnil因为它期望Array

你可以通过使用来避免这种情况

<% for masterlocation in @nearbylocations %>
  <li><%= masterlocation.nickname %></a></li>
<% end if @nearbylocations %>

我还注意到您在重定向后被声明为实例变量。理想情况下

redirect_to '/'
@nearbylocations = Masterlocation.find(:all, :conditions => ["latitude > 25 AND latitude < 30 AND longitude > -75 AND longitude < -70", params[:id]], :order => ['nickname asc'])

应该

@nearbylocations = Masterlocation.find(:all, :conditions => ["latitude > 25 AND latitude < 30 AND longitude > -75 AND longitude < -70", params[:id]], :order => ['nickname asc'])
redirect_to '/'

但是在重定向之后你不能使用@nearbylocations所以你必须使用或者render在重定向方法中声明它。

于 2013-01-28T05:41:12.133 回答
0

你得到一个零错误导致你的@nearbylocations没有得到评估,因为'if'条件被执行并且Masterlocation查询在'else'中。如果总是需要@nearbylocation,您可以将其移出条件。

于 2013-01-28T05:42:13.383 回答
0

恶魔在这里

:conditions => ["latitude > 25 AND latitude < 30 AND longitude > -75 AND longitude < -70", params[:id]]

这个查询什么也没给出

你有@nearbylocations = nil

然后你收到undefined method错误

在:条件做什么params[:id]?我猜你忘了删除它或者你忘了添加?到查询中""

于 2013-01-28T05:42:43.367 回答