0

我正在使用地理编码器和设计 gem。我正在尝试在用户位置附近获取优惠券

优惠券模型

def index
  if params[:search].present?
    @coupons = Coupon.near([user_long, user_lat], 50, :order => :distance)
  else
     @coupons = Coupon.all
  end
end 

应用程序助手

我已经定义了 user_long 和 user_lat

  def user_long
           current_user.longitude
   end


   def user_lat
           current_user.latitude
   end

设计宝石

我尝试使用设计 gem 助手来获取这样的值

优惠券模型

def index
  if params[:search].present?
    @coupons = Coupon.near([current_user.longitude, current_user.latitude], 50, :order => :distance)
  else
     @coupons = Coupon.all
  end
end 

我正在用这个撞墙和牢房。有人可以帮忙吗,我知道这是新手问题,但我无法解决,所以救了我的命?

4

2 回答 2

0

您在索引页面上看不到任何内容,因为您的 @coupons 数组为空:

@coupons = Coupon.near([current_user.longitude, current_user.latitude], 50, :order => :distance)

在开发日志中(在运行 rails 服务器的同一窗口中,如果您从控制台运行 rails 服务器),您应该检查为 CouponsController#index 操作生成的 SQL 查询。

假设您像这样定义了“近”查询:

class Coupon
   scope :near, lambda { |longitude, latitude| some logic...
end

您可以使用“rails 控制台”调试此“近”方法,如下所示:

rails console
> Coupon.near(10, 20)

ETC..

于 2012-05-11T04:32:38.710 回答
0

我的错误是我在那个纬度之前有经度,它带走了逻辑

这行得通。

def index
     @coupons = Coupon.near([current_user.latitude, current_user.longitude], 50, :order => :distance)

end  
于 2012-05-11T05:50:46.247 回答