Ruby on rails 忽略某些空白参数进行搜索
我有一个简单的搜索动作,它有3个参数和一个where方法来搜索模型。如果我搜索并且某些参数为零,它将不会返回我想要的记录。我希望它只使用非nil/blank的参数来搜索数据库。因此,如果在参数中只输入并发送一个类别,我希望我的控制器忽略其他两个参数。但是,如果存在其他参数,我希望将它们包括在搜索中 我尝试过很多方法,但都不能让它正常工作。这是我的密码Ruby on rails 忽略某些空白参数进行搜索,ruby-on-rails,activerecord,ruby-on-rails-3.2,Ruby On Rails,Activerecord,Ruby On Rails 3.2,我有一个简单的搜索动作,它有3个参数和一个where方法来搜索模型。如果我搜索并且某些参数为零,它将不会返回我想要的记录。我希望它只使用非nil/blank的参数来搜索数据库。因此,如果在参数中只输入并发送一个类别,我希望我的控制器忽略其他两个参数。但是,如果存在其他参数,我希望将它们包括在搜索中 我尝试过很多方法,但都不能让它正常工作。这是我的密码 hash = [] cat = :category_id => params[:category_id] col = :color_id =
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)
我将变量放入字符串和散列中,称为_a,并用(“,”)连接它们。什么都不管用
谢谢试试这段代码
criteria = { :category_id => params[:category_id], :color_id => params[:color_id],
:brand_id => params[:brand_id] }.select { |key,value| value.present? }
@results = Piece.where(criteria).preload(:item).preload(:user).group(:item_id).
paginate(:page => params[:page], :per_page => 9)
正是我所追求的,如此美丽的小:)