Ruby on rails ActiveSearch::EmptyTerError
我正在使用Active_搜索插件尝试向我的应用程序添加一些简单的搜索功能,当在数据库中找到它们时,它可以正常工作,但是如果我只是在没有输入的情况下运行搜索,那么它会给我错误消息“ActiveSearch::EmptyTerError” 我如何使搜索操作返回正确的值(它可以做到),而且,如果没有找到任何东西或没有输入任何东西,应用程序会使用flash告诉我这一点 下面是代码:Ruby on rails ActiveSearch::EmptyTerError,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在使用Active_搜索插件尝试向我的应用程序添加一些简单的搜索功能,当在数据库中找到它们时,它可以正常工作,但是如果我只是在没有输入的情况下运行搜索,那么它会给我错误消息“ActiveSearch::EmptyTerError” 我如何使搜索操作返回正确的值(它可以做到),而且,如果没有找到任何东西或没有输入任何东西,应用程序会使用flash告诉我这一点 下面是代码: def搜索 if参数[:查询] query=params[:query] @users=User.find\u使用\u术
def搜索
if参数[:查询]
query=params[:query]
@users=User.find\u使用\u术语(查询)
否则,即在查询中找不到任何内容,请执行此操作
flash[:注意]=“未找到任何结果”
重定向到:操作=>“主页”
终止
终止
非常感谢您的任何想法。您必须使用
rescue
块处理错误:
def search
@users = User.find_using_term params[:query]
rescue ActiveSearch::EmptyTermError
flash[:notice] = "No Results Found"
redirect_to :action => "home"
end
这样,如果搜索运行正常,但结果集仍然为空,则不会重定向。下面是一些代码,它会闪烁并重定向空结果和空Y错误
def search
@users = User.find_using_term params[:query]
return unless @users.empty?
rescue ActiveSearch::EmptyTermError
ensure
flash[:notice] = "No Results Found"
redirect_to :action => "home"
end
如果我们得到结果,返回就离开
rescue
块是空的,它只是让错误通过
无论我们是否处理了异常,确保
块都会运行。(但如果我们在此之前返回,肯定不会。)两者之间有区别
User.find()
vs
User.find_all()
如果没有找到记录,第一个将抛出异常。第二个将返回零。在第一种情况下,它就像您正在通过“主键”进行搜索
可能与您的问题有关…find_using_term是ActiveSearch插件中的一种方法,它不是动态查找器。
def search
@users = User.find_using_term params[:query]
return unless @users.empty?
rescue ActiveSearch::EmptyTermError
ensure
flash[:notice] = "No Results Found"
redirect_to :action => "home"
end