Я использую Sunspot для поиска и использую Geocoder для адресов, а затем для вычисления расстояний, Геокит-рельсы3 .
class Product < ActiveRecord::Base
belongs_to :store
searchable do
text :name
end
end
class Store < ActiveRecord::Base
acts_as_mappable
geocoded_by :address, :latitude => :lat, :longitude => :lng
attr_accessible :lat, :lng, :address
has_many :products
end
При вводе продукта для поиска я хочу также иметь возможность вводить адрес внутри другого поля для поиска продуктов в данной области с радиусом 30 миль.
Это мой контроллер, который позволяет мне искать продукты:
class SearchController < ApplicationController
def index
@search = Product.search do |q|
q.fulltext params[:search]
end
@products = @search.results
end
end
Итак, я считаю, что форма будет выглядеть примерно так, когда я закончу:
<%= form_tag search_path, :method => 'get' do %>
<%= text_field_tag :search, params[:search]" %>
<%= submit_tag "Search", :name => nil %>
Search Near:
<%= label_tag :location, "Search nearby an Address" %>
<%= text_field_tag :location, params[:location] %>
<% end %>
Я думаю, : location
будет служить в качестве виртуальный атрибут для магазинов : адрес
для правильного отображения поля, но это все предположения.
Как мне настроить все это, чтобы реализовать конкретный сценарий?