Zac Smith
Zac Smith

Reputation: 31

Rails 3 - Ransack - check_box_tag

Listing Model - belongs_to :area

Area Model - has_many :listings

I'm trying to implement a search using Ransack with check boxes; where user checks selected areas, search returns all the listings of the areas selected.

<%= search_form_for @search do |f| %>
<% areas = Area.all %>
    <% areas.each do |area| %>
        <%= check_box_tag('q[area_id_eq][]', area.id) %>
        <%= area.location%>
    <% end%>
<%= f.submit "SEARCH" %>
<% end %>

Console output:

Parameters: {"utf8"=>"✓", "q"=>{"area_id_eq"=>["1", "2"]}, "commit"=>"SEARCH"}
Completed 500 Internal Server Error in 4ms

NoMethodError - undefined method `to_i' for ["1", "2"]:Array:

Just not sure how to implement it to accept multiple check box values.

Upvotes: 3

Views: 3832

Answers (1)

Jon Lebensold
Jon Lebensold

Reputation: 349

Instead of using "area_id_eq", use "area_id_any". You'll also want to check to make sure that your parameters are selected:

<%= search_form_for @search do |f| %>
<% areas = Area.all %>
    <% areas.each do |area| %>
        <%= check_box_tag('q[area_id_eq_any][]', area.id,  (params[:q][area_id_eq_any].include? area.id.to_s) ? true : false ) %>
        <%= area.location%>
    <% end%>
<%= f.submit "SEARCH" %>
<% end %>

Upvotes: 5

Related Questions