Я использую рельсы 3, и у меня есть две модели, места и зоны, где в каждой зоне много площадок, и каждая площадка принадлежит одной зоне .
Я пытаюсь найти способ фильтрации записей о месте проведения, отображаемых в индексе места проведения, по тому, какая область выбрана в раскрывающемся списке на той же странице.
В раскрывающемся списке в настоящее время отображаются все записи моей области, как я хотел бы, но после выбора области и нажатия кнопки отправки я бы хотел, чтобы страница индекса была перезагружена и отображались только частичные записи записей о месте проведения с той же областью, что и выбрано в раскрывающемся списке.
Осциллографы, которые у меня есть в модели, отображают правильные места проведения при вызове в консоли rails или при изменении индекса def в контроллере на @venue = Venue.north / Venue.south / Venue.west . Я просто не могу придумать, как по умолчанию отображать все места, но затем вызывать каждую область в зависимости от того, какая область выбрана в форме.
На данном этапе меня не беспокоит использование AJAX, я просто хотел бы понять, как это можно сделать максимально простым способом и без использования sphinx / Think_sphinx.
Модель:
class Venue < ActiveRecord::Base
belongs_to :user
has_many :reviews
belongs_to :area
scope :north, where(:area_id => "2")
scope :west, where(:area_id => "3")
scope :south, where(:area_id => "4")
end
Просмотр: (location index.html. erb)
<div class="filter_options_container">
<form class="filter_form">
<%= select("area", "area_id", Area.all.map {|a| [a.name, a.id] }) %>
<input type="submit" value="Filter" />
</form>
</div>
<div class="venue_partials_container">
<%= render :partial => 'venue', :collection => @venues %>
</div>
Контроллер:
class VenuesController < ApplicationController
def index
@venues = Venue.all
end
end
Любая помощь приветствуется.