我想添加带有类别的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
那是有效的,但你怎么看待这些做法?
答案 0 :(得分:4)
你可以试试这个很棒的语法
ThinkingSphinx.search 'pancakes', :classes => [Article, Comment]
了解详情
答案 1 :(得分:3)
您可以搜索应用程序中的所有索引模型:
ThinkingSphinx.search(params[:term])
然后,您可以为每个模型方法定义,例如autocomplete_json
,返回哈希值。
所以,你的行动
def autocomplete
render :json => ThinkingSphinx.search(params[:term]).map(&:autocomplete_json)
end