アドレスの検索とGeocoderの使用にSunspotを使用し、距離の計算にGeokit-rails3を使用しています。
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 %>
<p> Search Near: </p>
<%= label_tag :location, "Search nearby an Address" %>
<%= text_field_tag :location, params[:location] %>
<% end %>
フィールドを正しくマッピングするために:location
、ストアの仮想属性として機能すると考えていますが、これはすべて推測です。:address
特定のシナリオを実現するために、これをすべて設定するにはどうすればよいですか?