我有一个可以正常工作的搜索栏,但每次显示正确的结果时都会产生重复。
if params[:nav_search]
@art = Art.where(["style_number LIKE ? OR name LIKE ?", "%#{params[:nav_search]}%", "%#{params[:nav_search]}%"]).page(params[:page]).per_page(18)
end
我出错的任何线索?
答案 0 :(得分:1)
尝试以下
@art = Art.where(["style_number LIKE ? OR name LIKE ?", "%#{params[:nav_search]}%", "%#{params[:nav_search]}%"]).distinct.page(params[:page]).per_page(18)
要从数据库中检索对象,Active Record提供了几种查找程序方法。每个finder方法都允许您将参数传递给它,以便在不编写原始SQL的情况下对数据库执行某些查询。
你可以很好地理解这个Rails Guide
答案 1 :(得分:0)
包括 .uniq
试试这个,
if params[:nav_search]
@art = Art.where(["style_number LIKE ? OR name LIKE ?", "%#{params[:nav_search]}%", "%#{params[:nav_search]}%"]).uniq.page(params[:page]).per_page(18)
end
答案 2 :(得分:0)
使用uniq
或distinct
来避免重复记录。在您的情况下,您应该使用distinct
:
if params[:nav_search]
@art = Art.where(["style_number LIKE ? OR name LIKE ?", "%#{params[:nav_search]}%", "%#{params[:nav_search]}%"]).distinct.page(params[:page]).per_page(18)
end