从下拉列表中筛选索引页面上的结果

我正在使用rails 3,我有两个模型,场地和区域,每个区域有很多场地,每个场地都属于一个区域。

我正在尝试找到一种方法来过滤场地索引中显示的场地记录,在同一页面的下拉框中选择了哪个区域。

下拉框当前显示我想要的所有区域记录,但是在选择区域并单击提交按钮后,我希望索引页面重新加载,并且仅显示场地记录的部分区域,其区域与在下拉框。

我在模型中的示波器在rails控制台中调用时显示正确的场地,或者通过将控制器中的def索引更改为@venues = Venue.north / venue.south / venue.west。 我只是想办法让所有场地都显示为默认值,然后根据从表格中选择的区域调用每个范围。

我现在并不打算使用AJAX,我只想了解如何以尽可能简单的方式完成它并且不使用sphinx / thinking_sphinx。

模型:

class Venue  "2") scope :west, where(:area_id => "3") scope :south, where(:area_id => "4") end 

查看:(场地index.html.erb)

 
'venue', :collection => @venues %>

控制器:

 class VenuesController < ApplicationController def index @venues = Venue.all end end 

任何帮助深表感谢。

您可以在控制器中找到场地,具体取决于是否选择了区域。 您可以修改视图以发送区域名称,而不是区域ID(这可能会使其更容易):

<%= select("area", "name", Area.all.collect(&:name)) %>
<%= select("area", "name", Area.all.collect(&:name)) %> 

控制器看起来像这样 –

def index if (params[:area] && Area.all.collect(&:name).include?(params[:area][:name])) @venues = Venue.send(params[:area][:name].downcase) else @venues = Venue.all end end
def index if (params[:area] && Area.all.collect(&:name).include?(params[:area][:name])) @venues = Venue.send(params[:area][:name].downcase) else @venues = Venue.all end end