gpt4 book ai didi

ruby-on-rails - 从下拉列表中过滤索引页面上的结果

转载 作者:行者123 更新时间:2023-12-04 14:18:59 26 4
gpt4 key购买 nike

我正在使用 rails 3 并且我有两个模型, field 和区域,其中每个区域都有许多 field ,每个 field 属于一个区域。

我试图找到一种方法,通过在同一页面的下拉框中选择的区域来过滤 field 索引中显示的 field 记录。

下拉框当前显示我所有的区域记录,但在选择一个区域并单击提交按钮后,我希望重新加载索引页面,并且只显示与在下拉框。

当在 Rails 控制台中调用或通过将 Controller 中的 def 索引更改为 @venues = Venue.north/venue.south/venue.west 时,我在模型中拥有的范围会显示正确的 field 。我只是想不出一种方法让所有 field 都显示为默认值,但是然后根据从表单中选择的区域来调用每个范围。

在这一点上,我不介意使用 AJAX,我只想了解如何以尽可能简单的方式完成它,而不使用 sphinx/thinking_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

查看:( field 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>

Controller :
class VenuesController < ApplicationController

def index
@venues = Venue.all
end
end

任何帮助深表感谢。

最佳答案

您可以根据是否选择了区域,在 Controller 中找到 field 。
您可以修改 View 以发送区域名称,而不是区域 id(这可能会更容易):

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

Controller 看起来像这样 -

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

关于ruby-on-rails - 从下拉列表中过滤索引页面上的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4846383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com