Я использую рельсы 3, и у меня есть две модели, места и области, где каждая область имеет много мест, и каждое место принадлежит одной области.
Я пытаюсь найти способ фильтрации записей места, отображаемых в индексе места, по тому, какая область выбрана в раскрывающемся списке на той же странице.
В настоящее время в раскрывающемся списке отображаются все мои записи области, как мне бы хотелось, но после выбора области и нажатия кнопки отправки мне бы хотелось, чтобы страница индекса перезагрузилась и отображала только части записей места с той же областью, что и та, что у меня есть. выбрано в выпадающем списке.
Области, которые у меня есть в модели, отображают правильные места при вызове в консоли rails или путем изменения индекса def в контроллере на @venues = Venue.north / venue.south / venue.west. Я просто не могу придумать способ отобразить все места по умолчанию, но затем вызвать каждую область в зависимости от того, какая область выбрана из формы.
На данный момент я не беспокоюсь об использовании AJAX. Я просто хотел бы понять, как это можно сделать как можно более простым способом без использования sphinx /inking_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
Просмотр: (место индекса.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
Любая помощь очень ценится.