モデルを検索するための 3 つのパラメーターと where メソッドを持つ単純な検索アクションがあります。検索していくつかのパラメーターが nil の場合、必要なレコードが返されません。nil/blank 以外のパラメーターのみを使用してデータベースを検索したい。そのため、1 つのカテゴリのみがパラメータに入力されて送信された場合、コントローラが他の 2 つのパラメータを無視するようにします。ただし、他のパラメーターが存在する場合は、それらを検索に含めたいと思います。
多くのアプローチを試しましたが、適切に機能させることができません。これが私のコードです。
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 と呼ばれる文字列とハッシュに入れ、それらを (",") で結合しました。何も機能しません。
ありがとう