我使用的是 Rails 3,有两种模型、场馆和区域,其中每个区域有多个场馆,每个场馆属于一个区域。
我试图找到一种方法,通过在同一页面的下拉框中选择的区域来过滤场地索引中显示的场地记录。
下拉框当前按我的意愿显示我的所有区域记录,但在选择区域并单击提交按钮后,我希望重新加载索引页面,并且仅显示与在列表中选择的区域具有相同区域的场地记录的部分内容。下拉框。
当在 Rails 控制台中调用或通过将控制器中的 def 索引更改为 @venues = Venue.north /venue.south /venue.west 时,模型中的范围会显示正确的场地。我只是想不出一种方法来将所有场地显示为默认值,然后根据从表单中选择的区域来调用每个范围。
我现在不介意使用 AJAX,我只是想了解如何以尽可能简单的方式完成它,而不使用 sphinx/thinking_sphinx。
Model:
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
查看:(场地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
任何帮助深表感谢。