在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>
非常感谢任何帮助。我知道这很简单,但我似乎无法找到答案。谢谢!
答案 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