0

我试图通过作为 Communities 表中的列的genre_id 来限制结果。
但是 community_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])
4

1 回答 1

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 
于 2013-01-04T23:12:05.963 回答