我有一个简单的搜索操作,它有 3 个参数和一个搜索模型的 where 方法。如果我搜索并且某些参数为nil,它将不会返回我想要的记录。我希望它仅使用非 nil/blank 的参数来搜索数据库。所以如果只输入一个类别并在参数中发送,我希望我的控制器忽略其他两个参数。但是,如果存在其他参数,我希望它们包含在搜索中。
我尝试了很多方法,但我无法让它正常工作。这是我的代码。
hash = []
cat = :category_id => params[:category_id]
col = :color_id => params[:color_id]
brand = :brand_id => params[:brand_id]
if params[:category_id].present?
hash += cat
end
if params[:color_id].present?
hash += col
end
if params[:brand_id].present?
hash += brand
end
@results = Piece.where(hash).preload(:item).preload(:user).group(:item_id).paginate(:page => params[:page], :per_page => 9)
我已将变量放入名为 to_a 的字符串和散列中,并用 (",") 将它们连接起来。没有任何效果。
谢谢