2017-04-06 6 views
0

私はこれに取り組むために最善の方法が何だろうと思っています。searchkick場所の半径を見つける

def search 
    search_options = { 
     misspellings: { edit_distance: 2 }, 
     fields: [:eventname, :date], 
     order: { date: :asc, eventname: :asc }, 
     match: :word_start, 
     suggest: true, 
     page: params[:page], 
     per_page: 20 
    } 
    if params[:date_from].present? 
     datefrom = params[:date_from].to_datetime.strftime('%Y-%m-%d') 
     dateto = params[:date_to].to_datetime.strftime('%Y-%m-%d') 
     search_options[:where] = { date: {gte: datefrom, lte: dateto} } 
    end 

    @events = Event.search params[:search], search_options 
    if @events.results.any? 
     render 'events/results' 
    else 
     @popevents = Event.limit(3).order('RANDOM()') 
     render 'events/noresults' 
    end 
    end 

今私がやりたいと思ってる何が人々は、彼らが入力した自分の郵便番号の50マイル内のイベントを検索できるようになる検索機能を追加している:私はこのようになります検索機能を持っています。

イベントテーブルには、すべてのイベントの場所の郵便番号を記載した郵便番号フィールドがあります。

これを行うにはどうすればよいでしょうか?

(可能な場合は、単純なちょっと手ガイドは素晴らしいだろう開催!!のような)サム

答えて

0

geocoder gemを見てください。ネイティブポストコード検索のためのデータベースやRailsのサポートはありませんが、ジオコーディングサービスを使用して、保存した各アドレスの緯度と経度を取得することができます。これには、これらの列をデータベースに追加することが含まれます。

geocodeは良いドキュメントを持っており、それは(あなたも、後者のためにsearchkickを使用することができますが)

を(緯度/経度を取得)との距離によって検索ジオコーディングであなたの両方を助けます
関連する問題