我对Rails相当新。我已经建立了一个搜索栏,可以浏览我的所有产品。当我只搜索产品名称或描述时,我得到了它的工作。但是,如果名称与搜索字词匹配或与描述匹配,我希望将搜索字词与两者以及要显示的产品进行比较。
这是我目前的代码:
if params[:q]
search = params[:q]
@products = Product.where("name LIKE ? OR description LIKE ?", "%#{search}%")
else
@products = Product.all
end
现在我收到一个错误:“错误的绑定变量数”
我一直试图谷歌寻求解决方案,但我没有幸运。如果有人可以帮助我,我会很感激!非常感谢。
答案 0 :(得分:13)
如果查询中的变量具有相同的值,则可以使用命名键:
Authorize
如果他们不同:
@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}%"
)
答案 1 :(得分:1)
您需要提供两次搜索键。每个?
search_key = "%#{search}%"
@products = Product.where("name LIKE ? OR description LIKE ?", search_key, search_key)