2012-05-10 123 views
0

我使用geocoder和設計寶石。我試圖獲得接近用戶的位置,優惠券設計寶石和Geocoder寶石

優惠券模式

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 

設計寶石

我試圖用色器件寶石幫手得到像這樣

優惠券模式

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

目前發生了什麼? – flooooo

+0

@flooooo此刻,沒有任何顯示,並且我的日誌中沒有錯誤。 – Benjamin

+0

@Benjamin你是怎麼得到current_user.lat和long?我曾嘗試添加一個after_validation:geocode到:current_sign_in_ip,但它似乎沒有工作.. –

回答

0

我的錯誤是我在那個緯度之前有經度,它拿走了邏輯

這工作。

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

end 
0

你是不是索引網頁上看到任何東西,因爲你的@coupons數組爲空:

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

在開發日誌(在軌運行服務器,如果從運行軌道服務器在同一窗口控制檯),您應該查看爲CouponsController#index操作生成的SQL查詢。

假設你確定你這樣的 '近' 查詢:

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

您可以使用 「軌道控制檯」 調試這個 '近' 的方法是這樣的:

rails console 
> Coupon.near(10, 20) 

等。

+0

感謝您的幫助。讓我再次從新鮮的眼睛看它。我按照你的建議使用了控制檯,我意識到我的問題是順序或緯度和經度。 – Benjamin