5

我正在使用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以便正确映射该字段,但这都是猜测。

我如何设置这一切以实现特定场景?

4

2 回答 2

3

请务必查看此 RailsCast。我认为它完全回答了你的问题。

于 2011-11-22T12:05:59.610 回答
3

我相信这个线程可以帮助你:http ://groups.google.com/group/ruby-sunspot/browse_frm/thread/ecc8231569ea7ef7/f8569abee2197a19?lnk=gst&q=geokit#f8569abee2197a19

还可以在Sunspot Group上查看更多关于该主题的主题。

于 2011-12-08T00:09:49.070 回答