首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Thinking-狮身人面像与ActsAsTaggableOn标签搜索

Thinking-狮身人面像与ActsAsTaggableOn标签搜索
EN

Stack Overflow用户
提问于 2014-07-22 14:34:57
回答 1查看 196关注 0票数 0

我有一个Rails应用程序,其中我使用Thinking-Sphinx进行搜索,使用ActsAsTaggableOn进行标记。我希望能够将当前选定的标记包含在我的搜索查询中。我试过以下几种方法,但没有让它起作用。

在我的控制器里:

代码语言:javascript
复制
def show

  @team_tags = @team.ideas.tag_counts_on(:tags)

  if params[:tag]
    @ideas = @team.ideas.search(params[:search], :conditions => { tags: "tag" })
  else
    @ideas = @team.ideas.search(params[:search])
  end

end

我的Idea模型索引:

代码语言:javascript
复制
ThinkingSphinx::Index.define :idea, :with => :real_time do
  [...]
  indexes tags.name, :as => :tags

  has user_id, type: :integer
  has team_id, type: :integer
  [...]
end

这给了我以下错误:

代码语言:javascript
复制
ActionView::Template::Error (index idea_core: query error: no field 'tags' found in schema

当我选择一个标记时,我的URLs如下所示:

代码语言:javascript
复制
/teams/1/tags/tag

那么,我应该怎么做才能让Thinking-SphinxActsAsTaggableOn一起工作呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-24 20:18:38

您所拥有的字段只适用于SQL支持的索引,而不是实时索引。

在这种情况下,您想要做的是在模型中创建一个方法,将所有标记名称作为一个字符串返回:

代码语言:javascript
复制
def tag_names
  tags.collect(&:name).join(' ')
end

然后您可以在索引定义中引用这一点:

代码语言:javascript
复制
indexes tag_names, :as => :tags

一旦您这样做了,您将需要重新生成狮身人面像索引,因为您已经更改了结构:rake ts:regenerate

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24890271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档