Rails思考狮身人面像的方法

时间:2011-11-20 20:22:13

标签: mysql ruby-on-rails sphinx thinking-sphinx

我试图在我的rails 3 app中设置思考sphinx。我设置了mysql并安装了sphinx而没有错误。在我的gemfile中我有

gem "riddle", "~> 1.5.0"
gem "thinking-sphinx", "~> 2.0.10"

这些安装很好。在我的模型中我有

define_index do
    indexes :name
    indexes acad_field
    indexes expertise
    indexes interests
    indexes experience
    indexes marital_status
    indexes email
    indexes place_of_birth
    indexes birthyear
    indexes hometown
    indexes current_residence
    indexes languages
    indexes nationalities
    indexes ethnicities_mom_dad
    indexes institution
    indexes program

end

在我控制器的索引中我有

def index
 #@profiles = Profile.all
 @profiles = Profile.search params[:search]
 respond_to do |format|
   format.html # index.html.erb
   format.json { render :json => @profiles }
 end
end

在我的路线中我有

match "profiles?search=:search", :to => "profiles#index"

当我尝试运行搜索时出现错误

Routing Error

undefined method `define_index' for #<Class:0xb3ada670>

我在这里做错了什么。

3 个答案:

答案 0 :(得分:2)

我只需要运行

rake thinking_sphinx:rebuild

在终端

答案 1 :(得分:0)

基于@fuzzyalej评论,所需的步骤是:

  • 将对应的宝石行替换为gem "thinking-sphinx", "~> 2.0.10", :require => 'thinking_sphinx'
  • 您不需要添加?search =:搜索路由匹配,因为rails可以接受没有其他规范的GET变量。

答案 2 :(得分:0)

你在gemfile中添加gem规范后可能没有运行'bundle install',我不认为rake ts:rebuild实际上解决了这个问题:)