[問題] Controller 多個filter parameters

看板Ruby作者 (New Season)時間9年前 (2015/05/16 00:13), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/1
這個問題有點空泛,但剛玩active records 想請問大大一般業界在實作時是怎麼去操作這塊的 我在做一個搜尋的功能,form 會送出 POST參數到 controller這邊應該怎麼搭配邏輯去編寫呢? 舉例來說 搜尋商品的價格 a 、高度 b、名稱 c if params.has_key?(:a) or params.has_key?(:b) or params.has_key?(:b ) @shops = Shop.where("price <= ?", @a).where("name LIKE ?", "%#{@a} ").limit(10) end 如果要去判斷三個參數有的有送有的沒送, 那勢必要有很多 if elsif或是使用case去撰寫 才能下query來搭配搜尋 但這樣每加一個params來搜尋要改動的地方好多, 規劃起來感覺很差, 想問有沒有比較好的方式?或者是應該搜尋什麼關鍵字去找類似的pattern呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.129.210 ※ 文章網址: https://www.ptt.cc/bbs/Ruby/M.1431706390.A.95A.html

05/16 13:38, , 1F
可以參考一下 ransack
05/16 13:38, 1F

05/23 10:15, , 2F
where("price <= ? AND "+high+" = ?",price,high)3個照辦
05/23 10:15, 2F

05/23 10:20, , 3F
說不定可以先組選項Hash, 再刪nil的, 再用hash去query
05/23 10:20, 3F
文章代碼(AID): #1LLXiMbQ (Ruby)
文章代碼(AID): #1LLXiMbQ (Ruby)