如何约束搜索结果?

时间:2013-01-04 21:10:56

标签: ruby-on-rails ruby-on-rails-3

我正在尝试通过genre_id约束结果,genre_id是“社区”表中的列 但是,community_controller中行的结尾表示错误 为什么?我该如何解决这个问题?

communities_controller.rb

        @search = Community.search do  
            fulltext params[:search]
            paginate :page => params[:page], :per_page => 5
        end 

        @communities = @search.results

        @communities = @communities.find_by_genre_id(params[:genre])

1 个答案:

答案 0 :(得分:1)

您应该观看此视频:http://railscasts.com/episodes/278-search-with-sunspot

它会帮助你。

以下是他使用的示例代码: 型号:article.rb

searchable do
  text :name, :boost => 5
  text :content, :publish_month
  text :comments do
    comments.map(&:content)
  end
  time :published_at
  string :publish_month
end

def publish_month
  published_at.strftime("%B %Y")
end

搜索算法:

@search = Article.search do
    fulltext params[:search]
    with(:published_at).less_than(Time.zone.now)
    facet(:publish_month)
    with(:publish_month, params[:month]) if params[:month].present?
  end
  @articles = @search.results

我不熟悉太阳黑子,但看起来您的错误(无法识别的字段)可能通过在您的模型中包含:genre_id来解决,如下所示:

searchable do
  integer :genre_id
  ...
end

所以你的新搜索看起来像是:

@search = Community.search do  
  fulltext params[:search]
  with(:genre_id, params[:genre_id])
  paginate :page => params[:page], :per_page => 5
 end