我想做一个搜索的 form,但是这个 form 的内容比较多,例如如果我想搜索 Order model 的东西。 然后 form tag 涉及:
价格范围(小)
价格范围(大)
订单号码
订单类型
订单内容数量范围(小)
订单内容数量范围(大)
...
然后 controller 里就比较复杂,就得写成:
def index
@orders = Order.where(
price: (params[:价格范围(小)].to_i).. (params[:价格范围(大)].to_i),
number: 订单号码,
category: 订单类型,
order_product: (params[:订单内容数量范围(小)].to_i).. (params[:订单内容数量范围(大)].to_i),
...
)
end
其实 index 的 action 复杂倒关系不大,可是这样做,url 变得非常的长:
127.0.0.1:3000/orders?价格范围(小)=1&价格范围(大)=5&订单号码=22312312&订单类型=3...........
然后想到还有一种方式就是,默认项就都不发到服务器了,url 就会变得短一点,但是问题是 controller 就变得复杂,需要判断各种params为空的情况
。
还有一种方式就是做 post 请求,但是这样刷新就没有了。
不知道我想了解一下,如果做一个复杂的搜索框,用什么方式做,是最好的实践呢?