【问题标题】:Geocoder rails filter nearbys地理编码器轨道过滤附近
【发布时间】:2020-07-11 02:51:58
【问题描述】:

只是想知道在我的案例中查找附近的“客户”时如何过滤控制器的结果

我的展示页面上有这个

    <% for client in @due.nearbys(15) %>
            <tr><td><b><%= link_to client.name, client %> <%= link_to client.surname, client %>:</b>
              <%= link_to client.scheduled_date.strftime('%A %m-%d-%y'), client %>

在我指定的 clients_controller 上

@due =  current_user.clients.where(['scheduled_date < ?', 6.months.ago]).order('scheduled_date DESC')

但是我得到了

undefined method `nearbys' for #<Client::ActiveRecord_AssociationRelation:0x00007fb2a2aea67>

不知道如何调用附近的客户端工作正常,但要添加过滤器,我应该将其添加为范围吗?谢谢!

【问题讨论】:

  • 您是否将extend Geocoder::Model::ActiveRecord 添加到客户端模型中?
  • 谢谢@Quân Hoàng 我该怎么做?以及如何过滤结果谢谢!!!
  • 要使用 Geocoder gem,您必须将 geocoded_by :your_address_column 添加到模型中。如果您不使用 Rails,则将 extend Geocoder::Model::ActiveRecord 添加到模型中。关注:github.com/alexreisner/geocoder#use-outside-of-rails
  • 是的,安装和填充持续很长时间等,但是如果我想在预定日期之前过滤我的客户,我似乎无法弄清楚逻辑,因此并非所有客户都出现
  • 我已经添加了 gem,它可以对我的结果进行地理编码,地图很好。我想在显示页面上过滤附近的客户,以仅在几个月没有服务时才显示附近的客户。我该怎么做呢?目前所有附近的客户都在展示

标签: ruby-on-rails rails-geocoder


【解决方案1】:

这取决于你的逻辑。但是为了得到附近的人


Client.near([this_client.lng, this_client.lat], 50, units: :km).where('actived_at', '<=', 3.months.ago)

类似于上面的代码。条件取决于您的业务。

【讨论】:

  • 是的。它可以放在控制器上。 (或者您可以在客户端模型上定义一个函数,例如 get_nearby_unactive_clients)。然后在任何你想要的地方调用它。
  • 哦,谢谢Quân。最后一个问题。那会是一个范围吗?
  • @EvanRoberts 是的。当然。很好。顺便说一句,感谢您正确输入我的名字。 ^^!
  • 感谢 Quân 我希望人们能正确地理解我的名字并且没有添加 s!哈哈再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多