3
Listing Model - belongs_to :area

Area Model - has_many :listings

チェックボックス付きのRansackを使用して検索を実装しようとしています。ユーザーが選択したエリアをチェックすると、検索により、選択したエリアのすべてのリストが返されます。

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

1 に答える 1

5

「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 %>
于 2013-02-25T10:32:11.110 に答える