我對Rails很新穎,我有一種感覺,我從一個錯誤的角度來看待這個問題,但是這裏有...我有一個顯示車輛的列表頁面我試圖添加過濾功能,用戶可以通過vehicle_size,製造商和/或payment_options過濾結果。rails「where」聲明:我如何忽略空白參數
使用三個select表單字段,用戶可以設置的值:vehicle_size,:製造商和/或:payment_options參數和提交這些值提供給控制器,其中i正在使用
@vehicles = Vehicle.order("vehicles.id ASC").where(:visible => true, :vehicle_size => params[:vehicle_size])
類型的查詢。這對單個參數工作正常(上面的返回結果爲正確的車輛大小),但我希望能夠通過所有3個參數而沒有得到任何結果,如果其中一個參數留空白。
是否有一個這樣做的方式沒有經過寫作過程,如果語句定義不同的地方聲明取決於什麼參數設置?如果我添加更多的過濾選項這可能成爲非常繁瑣的..也許某種直列如果對象的has_key解決的效果:
@vehicles = Vehicle.order("vehicles.id ASC").where(:visible => true, if(params.has_key?(:vehicle_size):vehicle_size => params[:vehicle_size], end if(params.has_key?(:manufacturer):manufacturer => params[:manufacturer] end)
對不起提前N00B問題和感謝。
啊 - 讓你設置@vehicles,然後你把它通過WHERE語句爲每過濾器是存在的嗎?..我想象在一條線上完成所有工作,但是這個工作正常 - 感謝很多 –
好的解決方案歡呼隊友。 :) – ndrx42