2016-01-10 29 views
1

我对Rails相当陌生。我一直在建立一个搜索栏,浏览我的所有产品。当我只通过产品名称或描述进行搜索时,我就可以使用它。但是,如果名称与搜索字词匹配或符合描述,我希望将搜索字词与要显示的产品进行比较。在ActiveRecord中使用多个LIKE语句查询

这是我的代码的时刻:

if params[:q] 
    search = params[:q] 
    @products = Product.where("name LIKE ? OR description LIKE ?", "%#{search}%") 
else 
    @products = Product.all 
    end 

现在我得到一个错误:“绑定的错误数变量”

我一直在试图谷歌的一个解决方案,但我HAVN很幸运。如果有人能帮助我,我会很感激!非常感谢。

回答

1

您需要提供两次搜索键。为每个?

search_key = "%#{search}%" 
@products = Product.where("name LIKE ? OR description LIKE ?", search_key, search_key) 
+0

啊谢谢你你这么多!非常感谢 –

7

如果您在查询变量具有相同的值,可以使用指定的键:

@products = Product.where(
    "name LIKE :search OR description LIKE :search", search: "%#{search}%" 
) 

如果他们不同:

@products = Product.where(
    "name LIKE :first_search OR description LIKE :second_search", 
    first_search: "%#{f_search}%", second_search: "%#{s_search}%" 
) 

或只使用问号:

@products = Product.where(
    "name LIKE (?) OR description LIKE (?)", "%#{f_search}%", %#{s_search}%" 
) 
相关问题