Ruby on Rails:循环记录,但不显示当前id的记录

时间:2015-07-29 00:59:10

标签: ruby-on-rails ruby ruby-on-rails-4

我可以根据地理编码器宝石的纬度和经度搜索附近的记录,但是我怎么不显示我现在正在查看的记录?

如果我在localhost:3000/project/san-diego(位于美国圣地亚哥)的项目展示中,我在附近搜索

# controller
@project = Project.friendly.find(params[:id])
@nearby = Project.near([@project.latitude, @project.longitude], 50, :order => 'distance')

# view
<% @nearby.each do |n| %>
  <span><%= n.title_name %></span>
<% end %>

如何不显示当前记录,而是显示附近的所有其他记录?

2 个答案:

答案 0 :(得分:3)

使用地理编码器,您只需执行此操作:

# controller
@project = Project.friendly.find(params[:id])
@nearby = @project.nearbys(50)

# view
<% @nearby.each do |n| %>
  <span><%= n.title_name %></span>
<% end %>

注意nearbys方法。这会在给定距离(50英里)内找到同一对象的其他。在这种情况下,它会找到其他Project s。

此方法在Geocoder文档页面上详细说明:https://github.com/alexreisner/geocoder

答案 1 :(得分:1)

作为一般解决方案,您可以跳过它。

<% @nearby.each do |n| %>
  <% next if n == @project %>
  <span><%= n.title_name %></span>
<% end %>