如果没有找到Elasticsearch的结果,则重定向到路径

时间:2015-04-10 06:57:07

标签: ruby-on-rails ruby-on-rails-4 error-handling elasticsearch searchkick

在rails 4 app上使用elasticsearch和searchkick。

如果未找到搜索结果,请尝试重定向到某个路径。我最近从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>

非常感谢任何帮助。我知道这很简单,但我似乎无法找到答案。谢谢!

2 个答案:

答案 0 :(得分:1)

使用此代码:

if @articles.blank?
  redirect_to request_path
else
  @results = @articles.results
end

答案 1 :(得分: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