mercredi 17 juin 2015

Multiple checkboxes filtering using filterrific

I have 4 checkboxes using the same scope. It's used for filtering the house with certain number of bedrooms. The last checkbox stand for "4 and more" bedroom

<%= 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) %>

When I check/uncheck these checkboxes, the parameter array passed to the scope change.

For example

x o o o

When the first box is checked, the array is [1]. It should show houses with 1 bedroom.

x x x x

The array is [1, 2, 3, more]. It should show all houses.

x x o o

The array is [1, 2]. It should show houses with 1 or 2 bedrooms.

x o o x

The array is [1, more]. It should show houses with 1, 4 or more bedrooms.

Currently, my scope is:

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

It only works with 1-3 bedrooms. How could I show all houses with 4 or more bedrooms when the last checkbox is checked?




Aucun commentaire:

Enregistrer un commentaire