Отфильтровать результаты на странице индекса из раскрывающегося списка

Я использую рельсы 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

Любая помощь приветствуется.

6
задан Dave 31 January 2011 в 20:04
поделиться