我想添加一个带有类别的jquery自动完成。该请求将使用Thinking Sphinx 在多个模型(论坛主题、新闻、用户…)中进行搜索
所以在控制器中,我认为它看起来像
def autocomplete
@news = Actu.search(params[:term]).map {|g| {:label => g.title, :category => "Actualités", :id => g.id}}
@topics = Topic.search(params[:term]).map {|g| {:label => g.title, :category => "Topics", :id => g.id}}
@anotherModel = ...
respond_to do |format|
format.js { render :json => @news+@topics+@anotherModel }
end
end
这很有效,但你对这些做法有什么看法?
你可以试试这个很棒的语法
ThinkingSphinx.search 'pancakes', :classes => [Article, Comment]
更多信息,请访问http://freelancing-god.github.com/ts/en/searching.html
您可以在应用程序中搜索所有索引模型:
ThinkingSphinx.search(params[:term])
然后可以为每个模型定义返回hash的方法,比如autocomplete_json
。
所以,你的行动
def autocomplete
render :json => ThinkingSphinx.search(params[:term]).map(&:autocomplete_json)
end