ruby-on-railsdropdownbox

How to Create a Rails Dropdown Filter


I am trying to create a dropdown filter in Rails 3.2.

I have seen solutions along these lines, but am unsure about how to implement them in my case. Filter results on index page from dropdown.

I have a table of events and I'd like a dropdown box to filter those events by category. I am half way there by doing something along these lines in the view using params:

<% @event.events_by_category(sanitize_output(params[:cat])).each do |e| %>
  ...
<% end %>

And then using the following in the event model:

def self.events_by_category(cat)
  if cat == nil
    all
  else
    where("category = ?", cat)
  end
end

However, creating a dropdown that refreshes the URL to include params in jQuery seems very dirty.

What's the best way to accomplish this type of dropdown in Rails?


Solution

  • You can use form_tag for this:

    <%= form_tag events_path, method: 'get' do %>
      <%= select_tag :cat, Options::TYPE %>
      <%= submit_tag 'Filter' %>
    <% end %>