【发布时间】:2012-01-02 15:38:30
【问题描述】:
我使用Sunspot 搜索地址,使用Geocoder 计算距离,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 的虚拟属性,以便正确映射该字段,但这只是猜测。
如何设置这一切以实现特定场景?
【问题讨论】:
标签: sunspot sunspot-rails