2013-01-18 3 views
3
Listing Model - belongs_to :area 

Area Model - has_many :listings 

Я пытаюсь выполнить поиск с использованием Ransack с помощью флажков; где пользователь проверяет выбранные области, поиск возвращает все списки выбранных областей.Rails 3 - Ransack - check_box_tag

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

Консольный вывод:

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: 

Просто не знаю, как реализовать его принимать несколько значений флажков.

ответ

4

Вместо использования "area_id_eq" используйте "area_id_any". Вы также хотите, чтобы проверить, чтобы убедиться, что ваши параметры выбраны:

<%= 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 %> 
+1

не забудьте исправить ярлык для параметров [: Q] [: area_id_eq_any] и проверить, если PARAMS [: Q] также равно – Wyatt

+0

'<% = check_box_tag 'q [area_id_eq_any] []', area.id, params [: q] [area_id_eq_any] .include? (area.id.to_s)%>' должен работать, поскольку include будет естественно return 'true' или' false'. – barnett

 Смежные вопросы

  • Нет связанных вопросов^_^