我对 Rails 很陌生,我感觉我从错误的角度接近这个问题,但它就在这里......我有一个显示车辆的列表页面,我正在尝试添加过滤功能,用户可以在其中过滤结果按车辆尺寸、制造商和/或付款选项。
使用三个选择表单字段,用户可以设置 :vehicle_size、:manufacturer 和/或 :payment_options 参数的值,并将这些值提交给我正在使用的控制器
@vehicles = Vehicle.order("vehicles.id ASC").where(:visible => true, :vehicle_size => params[:vehicle_size] )
一种查询。这适用于单个参数(上面返回正确车辆尺寸的结果)但是如果参数之一留空,我希望能够传入所有 3 个参数而不会得到任何结果。
有没有一种方法可以做到这一点,而无需通过编写 if 语句来定义不同的 where 语句,具体取决于设置的参数?如果我添加更多过滤器选项,这可能会变得非常乏味。如果 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 )