У меня есть модель места, где каждое место принадлежит области и типу. У меня есть 2 формы, состоящие из флажков на странице индекса, которые позволяют мне фильтровать записи места, показанные по типу или области, к которой они принадлежат. Однако используется только последняя строка в индексе def. Как их объединить, чтобы обе формы были активными?
Контроллер:
class VenuesController < ApplicationController
def index
@venues = Venue.all(:conditions => {:area_id => params[:areas]})
@venues = Venue.all(:conditions => {:venuetype_id => params[:venuetypes]})
end
end
Вид:
<div class="filter_options_container">
<form class="filter_by_area_form", method="get">
<% Area.all.each do |a| %>
<%= check_box_tag("areas[]", a.id) %>
<%= a.name %>
<% end %>
<input type="submit" value="Filter" />
</form>
<br><br>
<form class="filter_by_venuetype_form", method="get">
<% Venuetype.all.each do |v| %>
<%= check_box_tag("venuetypes[]", v.id) %>
<%= v.name %>
<% end %>
<input type="submit" value="Filter" />
</form>
</div>
<div class="venue_partials_container">
<%= render :partial => 'venue', :collection => @venues %>
<div class="clearall"></div>
<%= link_to 'add a new venue', new_venue_path, :class => "add_new_venue_button" %>
</div>
Так что работает только форма venuetype, или если я изменю индекс def на:
def index
@venues = Venue.all(:conditions => {:venuetype_id => params[:venuetypes]})
@venues = Venue.all(:conditions => {:area_id => params[:areas]})
end
Тогда работает только форма областей.
EDIT
Я изменил контроллер так:
def index
@venues = Venue.all(:conditions => {:venuetype_id => params[:venuetypes]}&&{:area_id => params[:areas]})
end
и вид на:
<div class="filter_options_container">
<form class="filter_form", method="get">
<fieldset class="filter_form_fieldset">
<% Area.all.each do |a| %>
<%= check_box_tag("areas[]", a.id) %>
<%= a.name %>
<% end %>
</fieldset><br>
<fieldset class="filter_form_fieldset">
<% Venuetype.all.each do |v| %>
<%= check_box_tag("venuetypes[]", v.id) %>
<%= v.name %>
<% end %>
<input type="submit" value="Filter" />
</fieldset>
</form>
</div>
После выбора области и типа из формы и нажатия кнопки отправки URL-адрес отображает «/ venues? Area [] = 2 & venuetypes [] = 13», но все еще фильтрует результаты по области, а не по типу.
Спасибо за любую помощь.