【问题标题】:Multiple checkboxes filtering using filterrific使用 filterrific 过滤多个复选框
【发布时间】:2015-06-18 07:16:33
【问题描述】:

我有 4 个使用相同范围的复选框。它用于过滤具有一定数量卧室的房屋。最后一个复选框代表“4 个及更多”卧室

<%= f.check_box(:with_bedroom_num_check, {multiple: true}, '1', nil) %>
<%= f.check_box(:with_bedroom_num_check, {multiple: true}, '2', nil) %>
<%= f.check_box(:with_bedroom_num_check, {multiple: true}, '3', nil) %>
<%= f.check_box(:with_bedroom_num_check, {multiple: true}, 'more', nil) %>

当我选中/取消选中这些复选框时,传递给范围的参数数组会发生变化。

例如

x o o o

选中第一个框时,数组为 [1]。它应该显示有 1 间卧室的房屋。

x x x x

数组是 [1, 2, 3, more]。它应该显示所有房屋。

x x o o

数组是 [1, 2]。它应该显示有 1 或 2 间卧室的房屋。

x o o x

数组是 [1, more]。它应该显示有 1、4 或更多卧室的房屋。

目前,我的范围是:

scope :with_bedroom_num_check, lambda { |flag|
    where(bedroom:[flag])
}

它只适用于 1-3 间卧室。选中最后一个复选框时,如何显示所有有 4 间或更多卧室的房屋?

【问题讨论】:

    标签: ruby-on-rails checkbox filterrific


    【解决方案1】:

    在您的范围内尝试以下操作。在此之前使用 '4' 而不是 'more' 作为最后一个复选框的值。

       ([1, 2, 3, 4] - flag).inject(all) do |x, y|
          if y == 4
            x.where.not("with_bedroom_num_check >= ?", y)
          else
            x.where.not(with_bedroom_num_check: y)
          end
        end
    

    【讨论】:

    • 我将“with_bedroom_num_check”改为“卧室”,效果很好!谢谢!
    猜你喜欢
    • 2019-12-21
    • 1970-01-01
    • 2019-09-20
    • 2014-05-12
    • 1970-01-01
    • 2014-09-17
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多