2013-01-04 120 views
0

我試圖通過genre_id這是Communities表中的列來限制結果。
但在communities_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]) 
+0

我的猜測是@communities不是活動的記錄,這意味着你不能做就可以了「find_by_genre_id」,這很可能是它爲什麼失敗。 – dmoss18

+0

我該如何限制所寫的標準呢? – cat

+1

你在用什麼來搜索?一些寶石或什麼? 「@ search.results」是一個數組嗎? –

回答

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 
+0

謝謝!這是完美的答案 – cat