0

在 Rails 4 应用程序上使用带有 searchkick 的 elasticsearch。

如果未找到搜索结果,则尝试重定向到某个路径。我最近从 solr 和 sunspot 切换到了 elasticsearch,所以仍然熟悉弹性。

我尝试使用我的旧代码(来自太阳黑子):

def index
  if params[:query].present?
    @articles = Article.search(params[:query], misspellings: {edit_distance: 1})
  else
    @articles = Article.all
  end

   if @articles.results.any?
     @results = @articles.results
   else
     return redirect_to request_path
   end
end

未找到结果时重定向有效,但如果单击搜索(提交)按钮且搜索栏中没有查询,则会返回错误:

undefined method `results' for #<Article::ActiveRecord_Relation:0x00000102300d10>

任何帮助将不胜感激。我知道这很简单,但我似乎找不到答案。谢谢!

4

2 回答 2

1

使用此代码:

if @articles.blank?
  redirect_to request_path
else
  @results = @articles.results
end
于 2015-04-10T07:02:22.673 回答
1

尝试这个:

if @articles.respond_to?(:results) # if we got results from ElasticSearch
   @results = @articles.results
elsif @articles.present? # if user has entered blank string ('@articles = Article.all' case)
   @results = @articles
else
   return redirect_to request_path
end
于 2015-04-10T07:05:16.047 回答