我正在使用地理编码器和设计宝石。而我正试图在用户所在地附近获得优惠券
优惠券型号
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
设计宝石
我试图使用devise gem helper来获取像这样的值
优惠券型号
def index
if params[:search].present?
@coupons = Coupon.near([current_user.longitude, current_user.latitude], 50, :order => :distance)
else
@coupons = Coupon.all
end
end
我正在撞墙,并用这种方式进行调整。有人可以帮忙,我知道这是新手问题,但我无法解决它,所以挽救我的生命?
答案 0 :(得分:0)
您在索引页面上没有看到任何内容,因为您的@coupons数组为空:
@coupons = Coupon.near([current_user.longitude, current_user.latitude], 50, :order => :distance)
在开发日志中(在运行rails服务器的同一窗口中,如果从控制台运行rails服务器),您应该查看为CouponsController#index action生成的SQL查询。
假设你定义了这样的“近”查询:
class Coupon
scope :near, lambda { |longitude, latitude| some logic...
end
您可以使用“rails console”调试此“near”方法,如下所示:
rails console
> Coupon.near(10, 20)
等。
答案 1 :(得分:0)
我的错误在于我在那个纬度之前拥有经度,它正在消除逻辑
这很有效。
def index
@coupons = Coupon.near([current_user.latitude, current_user.longitude], 50, :order => :distance)
end